{
  "contracts": {
    "@openzeppelin/contracts/access/Ownable.sol:Ownable": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "@openzeppelin/contracts/math/SafeMath.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc678d25e89d4246871753837f4111377352da1eb7a0de30c164a818e85335e064736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC PUSH8 0x8D25E89D42468717 MSTORE8 DUP4 PUSH32 0x4111377352DA1EB7A0DE30C164A818E85335E064736F6C634300060C00330000 ",
          "sourceMap": "630:6594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc678d25e89d4246871753837f4111377352da1eb7a0de30c164a818e85335e064736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC PUSH8 0x8D25E89D42468717 MSTORE8 DUP4 PUSH32 0x4111377352DA1EB7A0DE30C164A818E85335E064736F6C634300060C00330000 ",
          "sourceMap": "630:6594:1:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc678d25e89d4246871753837f4111377352da1eb7a0de30c164a818e85335e064736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc678d25e89d4246871753837f4111377352da1eb7a0de30c164a818e85335e064736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc678d25e89d4246871753837f4111377352da1eb7a0de30c164a818e85335e064736f6c634300060c0033",
      "srcmap": "630:6594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "630:6594:1:-:0;;;;;;;;"
    },
    "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b5060405162000e8738038062000e87833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff19166012179055506200027c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022357805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025357825182559160200191906001019062000236565b506200026192915062000265565b5090565b5b8082111562000261576000815560010162000266565b610bfb806200028c6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b316bd82f9c92e636a77dd0efea2fcb43c7e46194bd9a8d63653d1e3e05fa6f364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xE87 CODESIZE SUB DUP1 PUSH3 0xE87 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH3 0x1B4 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1E0 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1CA SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1E0 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x27C JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x223 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x253 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x253 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x253 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x236 JUMP JUMPDEST POP PUSH3 0x261 SWAP3 SWAP2 POP PUSH3 0x265 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x261 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x266 JUMP JUMPDEST PUSH2 0xBFB DUP1 PUSH3 0x28C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x82F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x89B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A6 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x92C SWAP1 DUP3 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220B316 0xBD DUP3 0xF9 0xC9 0x2E PUSH4 0x6A77DD0E INVALID LOG2 0xFC 0xB4 EXTCODECOPY PUSH31 0x46194BD9A8D63653D1E3E05FA6F364736F6C634300060C0033000000000000 ",
          "sourceMap": "1321:9474:2:-:0;;;1958:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;-1:-1:-1;;2032:13:2;;;;-1:-1:-1;2032:5:2;;:13;;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;1321:9474:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1321:9474:2;;;-1:-1:-1;1321:9474:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b316bd82f9c92e636a77dd0efea2fcb43c7e46194bd9a8d63653d1e3e05fa6f364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x82F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x89B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A6 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x92C SWAP1 DUP3 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220B316 0xBD DUP3 0xF9 0xC9 0x2E PUSH4 0x6A77DD0E INVALID LOG2 0xFC 0xB4 EXTCODECOPY PUSH31 0x46194BD9A8D63653D1E3E05FA6F364736F6C634300060C0033000000000000 ",
          "sourceMap": "1321:9474:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;3399:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;2168:89::-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;3399:125::-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;10701:92:2:-;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040523480156200001157600080fd5b5060405162000e8738038062000e87833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff19166012179055506200027c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022357805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025357825182559160200191906001019062000236565b506200026192915062000265565b5090565b5b8082111562000261576000815560010162000266565b610bfb806200028c6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b316bd82f9c92e636a77dd0efea2fcb43c7e46194bd9a8d63653d1e3e05fa6f364736f6c634300060c0033",
      "bin": "60806040523480156200001157600080fd5b5060405162000e8738038062000e87833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff19166012179055506200027c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022357805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025357825182559160200191906001019062000236565b506200026192915062000265565b5090565b5b8082111562000261576000815560010162000266565b610bfb806200028c6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b316bd82f9c92e636a77dd0efea2fcb43c7e46194bd9a8d63653d1e3e05fa6f364736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b316bd82f9c92e636a77dd0efea2fcb43c7e46194bd9a8d63653d1e3e05fa6f364736f6c634300060c0033",
      "srcmap": "1321:9474:2:-:0;;;1958:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;-1:-1:-1;1958:145:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1958:145:2;;-1:-1:-1;;2032:13:2;;;;-1:-1:-1;2032:5:2;;:13;;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;1321:9474:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1321:9474:2;;;-1:-1:-1;1321:9474:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "1321:9474:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;3399:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;2168:89::-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;3399:125::-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;10701:92:2:-;;;;:::o"
    },
    "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "@openzeppelin/contracts/token/ERC20/SafeERC20.sol:SafeERC20": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8357906a80868924c4ebf27a2292f072ffb2a6dbf5afaa63d421d84847cec7c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 CALLDATALOAD PUSH26 0x6A80868924C4EBF27A2292F072FFB2A6DBF5AFAA63D421D8484 PUSH29 0xEC7C64736F6C634300060C003300000000000000000000000000000000 ",
          "sourceMap": "616:3104:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8357906a80868924c4ebf27a2292f072ffb2a6dbf5afaa63d421d84847cec7c64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 CALLDATALOAD PUSH26 0x6A80868924C4EBF27A2292F072FFB2A6DBF5AFAA63D421D8484 PUSH29 0xEC7C64736F6C634300060C003300000000000000000000000000000000 ",
          "sourceMap": "616:3104:4:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8357906a80868924c4ebf27a2292f072ffb2a6dbf5afaa63d421d84847cec7c64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8357906a80868924c4ebf27a2292f072ffb2a6dbf5afaa63d421d84847cec7c64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8357906a80868924c4ebf27a2292f072ffb2a6dbf5afaa63d421d84847cec7c64736f6c634300060c0033",
      "srcmap": "616:3104:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "616:3104:4:-:0;;;;;;;;"
    },
    "@openzeppelin/contracts/utils/Address.sol:Address": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f49b75e7e6c2c8b844d71209e71c1c6eebec0b683e1147c8c799a53dff8723b64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODEHASH 0x49 0xB7 0x5E PUSH31 0x6C2C8B844D71209E71C1C6EEBEC0B683E1147C8C799A53DFF8723B64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "134:7684:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f49b75e7e6c2c8b844d71209e71c1c6eebec0b683e1147c8c799a53dff8723b64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODEHASH 0x49 0xB7 0x5E PUSH31 0x6C2C8B844D71209E71C1C6EEBEC0B683E1147C8C799A53DFF8723B64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "134:7684:5:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f49b75e7e6c2c8b844d71209e71c1c6eebec0b683e1147c8c799a53dff8723b64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f49b75e7e6c2c8b844d71209e71c1c6eebec0b683e1147c8c799a53dff8723b64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f49b75e7e6c2c8b844d71209e71c1c6eebec0b683e1147c8c799a53dff8723b64736f6c634300060c0033",
      "srcmap": "134:7684:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "134:7684:5:-:0;;;;;;;;"
    },
    "@openzeppelin/contracts/utils/Context.sol:Context": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "@openzeppelin/contracts/utils/EnumerableSet.sol:EnumerableSet": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206153f086a60a6f3e59b97ac2da16f30d3ca42c0ae40609e8171288df74090d4264736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x53F0 DUP7 0xA6 EXP PUSH16 0x3E59B97AC2DA16F30D3CA42C0AE40609 0xE8 OR SLT DUP9 0xDF PUSH21 0x90D4264736F6C634300060C003300000000000000 ",
          "sourceMap": "753:8634:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206153f086a60a6f3e59b97ac2da16f30d3ca42c0ae40609e8171288df74090d4264736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x53F0 DUP7 0xA6 EXP PUSH16 0x3E59B97AC2DA16F30D3CA42C0AE40609 0xE8 OR SLT DUP9 0xDF PUSH21 0x90D4264736F6C634300060C003300000000000000 ",
          "sourceMap": "753:8634:7:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206153f086a60a6f3e59b97ac2da16f30d3ca42c0ae40609e8171288df74090d4264736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206153f086a60a6f3e59b97ac2da16f30d3ca42c0ae40609e8171288df74090d4264736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206153f086a60a6f3e59b97ac2da16f30d3ca42c0ae40609e8171288df74090d4264736f6c634300060c0033",
      "srcmap": "753:8634:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "753:8634:7:-:0;;;;;;;;"
    },
    "@openzeppelin/contracts/utils/ReentrancyGuard.sol:ReentrancyGuard": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/Authorizable.sol:Authorizable": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6106ec8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b918161111610050578063b9181611146100e5578063cf1c316a1461012c578063f2fde38b1461015f57610072565b8063485d7d9414610077578063715018a6146100ac5780638da5cb5b146100b4575b600080fd5b6100aa6004803603602081101561008d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610192565b005b6100aa6102a9565b6100bc6103c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610118600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f1565b6100aa6004803603602081101561017557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b61019a61068c565b73ffffffffffffffffffffffffffffffffffffffff166101b86103c0565b73ffffffffffffffffffffffffffffffffffffffff161461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561025d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102b161068c565b73ffffffffffffffffffffffffffffffffffffffff166102cf6103c0565b73ffffffffffffffffffffffffffffffffffffffff161461035157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60016020526000908152604090205460ff1681565b6103f961068c565b73ffffffffffffffffffffffffffffffffffffffff166104176103c0565b73ffffffffffffffffffffffffffffffffffffffff161461049957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6104f361068c565b73ffffffffffffffffffffffffffffffffffffffff166105116103c0565b73ffffffffffffffffffffffffffffffffffffffff161461059357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106916026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212202d9d3cf0026c3219cad0b41d6f88d5eea28faed8bc7273d2253dcf32db554a3e64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x1B PUSH2 0x6A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x6EC DUP1 PUSH2 0x7D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB9181611 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15F JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0xBC PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x19A PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B8 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2CF PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x3F9 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x417 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x499 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4F3 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x593 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x691 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A26469706673582212202D9D3CF0026C ORIGIN NOT 0xCA 0xD0 0xB4 SAR PUSH16 0x88D5EEA28FAED8BC7273D2253DCF32DB SSTORE 0x4A RETURNDATACOPY PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "112:460:9:-:0;;;;;;;;;;;;-1:-1:-1;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;850:159;112:460:9;;598:104:6;685:10;598:104;:::o;112:460:9:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100725760003560e01c8063b918161111610050578063b9181611146100e5578063cf1c316a1461012c578063f2fde38b1461015f57610072565b8063485d7d9414610077578063715018a6146100ac5780638da5cb5b146100b4575b600080fd5b6100aa6004803603602081101561008d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610192565b005b6100aa6102a9565b6100bc6103c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610118600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f1565b6100aa6004803603602081101561017557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b61019a61068c565b73ffffffffffffffffffffffffffffffffffffffff166101b86103c0565b73ffffffffffffffffffffffffffffffffffffffff161461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561025d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102b161068c565b73ffffffffffffffffffffffffffffffffffffffff166102cf6103c0565b73ffffffffffffffffffffffffffffffffffffffff161461035157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60016020526000908152604090205460ff1681565b6103f961068c565b73ffffffffffffffffffffffffffffffffffffffff166104176103c0565b73ffffffffffffffffffffffffffffffffffffffff161461049957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6104f361068c565b73ffffffffffffffffffffffffffffffffffffffff166105116103c0565b73ffffffffffffffffffffffffffffffffffffffff161461059357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106916026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212202d9d3cf0026c3219cad0b41d6f88d5eea28faed8bc7273d2253dcf32db554a3e64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB9181611 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15F JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0xBC PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x118 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x19A PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B8 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2CF PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x3F9 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x417 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x499 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4F3 PUSH2 0x68C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 PUSH2 0x3C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x593 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x691 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A26469706673582212202D9D3CF0026C ORIGIN NOT 0xCA 0xD0 0xB4 SAR PUSH16 0x88D5EEA28FAED8BC7273D2253DCF32DB SSTORE 0x4A RETURNDATACOPY PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "112:460:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:150;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;:::-;;1717:145:0;;;:::i;1085:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;151:42:9;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;316:98;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;151:42:9:-;;;;;;;;;;;;;;;:::o;316:98::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toAdd\",\"type\":\"address\"}],\"name\":\"addAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toRemove\",\"type\":\"address\"}],\"name\":\"removeAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Authorizable.sol\":\"Authorizable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/Authorizable.sol\":{\"keccak256\":\"0xc15372825a5b752d8515abd72d54cbf8556b2b611b26e5f2b6eac9cfdba3e95f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9ffa0813c53c5ab639eecabc06c5f4bc272a378ae3d94583f6569e1de1c5124\",\"dweb:/ipfs/QmWWxnv88Pd6YtFGjgHYtL5t24m2sDrVHV6CrKETZwi2Ci\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6106ec8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b918161111610050578063b9181611146100e5578063cf1c316a1461012c578063f2fde38b1461015f57610072565b8063485d7d9414610077578063715018a6146100ac5780638da5cb5b146100b4575b600080fd5b6100aa6004803603602081101561008d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610192565b005b6100aa6102a9565b6100bc6103c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610118600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f1565b6100aa6004803603602081101561017557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b61019a61068c565b73ffffffffffffffffffffffffffffffffffffffff166101b86103c0565b73ffffffffffffffffffffffffffffffffffffffff161461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561025d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102b161068c565b73ffffffffffffffffffffffffffffffffffffffff166102cf6103c0565b73ffffffffffffffffffffffffffffffffffffffff161461035157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60016020526000908152604090205460ff1681565b6103f961068c565b73ffffffffffffffffffffffffffffffffffffffff166104176103c0565b73ffffffffffffffffffffffffffffffffffffffff161461049957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6104f361068c565b73ffffffffffffffffffffffffffffffffffffffff166105116103c0565b73ffffffffffffffffffffffffffffffffffffffff161461059357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106916026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212202d9d3cf0026c3219cad0b41d6f88d5eea28faed8bc7273d2253dcf32db554a3e64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6106ec8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b918161111610050578063b9181611146100e5578063cf1c316a1461012c578063f2fde38b1461015f57610072565b8063485d7d9414610077578063715018a6146100ac5780638da5cb5b146100b4575b600080fd5b6100aa6004803603602081101561008d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610192565b005b6100aa6102a9565b6100bc6103c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610118600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f1565b6100aa6004803603602081101561017557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b61019a61068c565b73ffffffffffffffffffffffffffffffffffffffff166101b86103c0565b73ffffffffffffffffffffffffffffffffffffffff161461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561025d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102b161068c565b73ffffffffffffffffffffffffffffffffffffffff166102cf6103c0565b73ffffffffffffffffffffffffffffffffffffffff161461035157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60016020526000908152604090205460ff1681565b6103f961068c565b73ffffffffffffffffffffffffffffffffffffffff166104176103c0565b73ffffffffffffffffffffffffffffffffffffffff161461049957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6104f361068c565b73ffffffffffffffffffffffffffffffffffffffff166105116103c0565b73ffffffffffffffffffffffffffffffffffffffff161461059357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106916026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212202d9d3cf0026c3219cad0b41d6f88d5eea28faed8bc7273d2253dcf32db554a3e64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100725760003560e01c8063b918161111610050578063b9181611146100e5578063cf1c316a1461012c578063f2fde38b1461015f57610072565b8063485d7d9414610077578063715018a6146100ac5780638da5cb5b146100b4575b600080fd5b6100aa6004803603602081101561008d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610192565b005b6100aa6102a9565b6100bc6103c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610118600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f1565b6100aa6004803603602081101561017557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b61019a61068c565b73ffffffffffffffffffffffffffffffffffffffff166101b86103c0565b73ffffffffffffffffffffffffffffffffffffffff161461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561025d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102b161068c565b73ffffffffffffffffffffffffffffffffffffffff166102cf6103c0565b73ffffffffffffffffffffffffffffffffffffffff161461035157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60016020526000908152604090205460ff1681565b6103f961068c565b73ffffffffffffffffffffffffffffffffffffffff166104176103c0565b73ffffffffffffffffffffffffffffffffffffffff161461049957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6104f361068c565b73ffffffffffffffffffffffffffffffffffffffff166105116103c0565b73ffffffffffffffffffffffffffffffffffffffff161461059357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106916026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212202d9d3cf0026c3219cad0b41d6f88d5eea28faed8bc7273d2253dcf32db554a3e64736f6c634300060c0033",
      "srcmap": "112:460:9:-:0;;;;;;;;;;;;-1:-1:-1;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;850:159;112:460:9;;598:104:6;685:10;598:104;:::o;112:460:9:-;;;;;;;",
      "srcmap-runtime": "112:460:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:150;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;:::-;;1717:145:0;;;:::i;1085:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;151:42:9;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;316:98;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;151:42:9:-;;;;;;;;;;;;;;;:::o;316:98::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o"
    },
    "contracts/CoinFlip.sol:CoinFlip": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ELEPHANT",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "_id",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "_value",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_elephant",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_player",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "betsplacedglobally",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changeminbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "contractbalance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastnumberwin",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "minimumbet",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "placeBet",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516110443803806110448339818101604052604081101561003357600080fd5b50805160209091015160006100466100cd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055674563918244f400006002556100d1565b3390565b610f64806100e06000396000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063b918161111610059578063b91816111461027f578063b9435c9d146102d3578063cf1c316a146102e8578063f2fde38b14610328576100f3565b80638da5cb5b146102165780638f7d62781461022b5780639b87dd9114610240578063b784c13e14610255576100f3565b806349c64f46116100c657806349c64f46146101b45780634afe62b5146101c957806350152cd0146101ec578063715018a614610201576100f3565b8063144f2f94146100f857806330e4f9aa146101365780633ccfd60b1461015d578063485d7d9414610174575b600080fd5b34801561010457600080fd5b5061010d610368565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014257600080fd5b5061014b610384565b60408051918252519081900360200190f35b34801561016957600080fd5b50610172610426565b005b34801561018057600080fd5b506101726004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661057f565b3480156101c057600080fd5b5061014b610696565b610172600480360360408110156101df57600080fd5b508035906020013561069c565b3480156101f857600080fd5b5061014b610a20565b34801561020d57600080fd5b50610172610a26565b34801561022257600080fd5b5061010d610b3d565b34801561023757600080fd5b5061010d610b59565b34801561024c57600080fd5b5061014b610b75565b34801561026157600080fd5b506101726004803603602081101561027857600080fd5b5035610b7b565b34801561028b57600080fd5b506102bf600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc3565b604080519115158252519081900360200190f35b3480156102df57600080fd5b5061010d610bd8565b3480156102f457600080fd5b506101726004803603602081101561030b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bf4565b34801561033457600080fd5b506101726004803603602081101561034b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cee565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b5051905090565b61042e610e8f565b73ffffffffffffffffffffffffffffffffffffffff1661044c610b3d565b73ffffffffffffffffffffffffffffffffffffffff16146104ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336104f5610384565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561054857600080fd5b505af115801561055c573d6000803e3d6000fd5b505050506040513d602081101561057257600080fd5b505161057d57600080fd5b565b610587610e8f565b73ffffffffffffffffffffffffffffffffffffffff166105a5610b3d565b73ffffffffffffffffffffffffffffffffffffffff161461062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561064a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60065481565b6002548110156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610f05602a913960400191505060405180910390fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d602081101561079157600080fd5b505110156107ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610edc6029913960400191505060405180910390fd5b60035460048054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339381019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301859052519216916323b872dd916064808201926020929091908290030181600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b505050506040513d602081101561089a57600080fd5b505161090757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b60014381160182811415610a1257600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152600285026024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b5051610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eba6022913960400191505060405180910390fd5b505060058054600101905550565b60055481565b610a2e610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610a4c610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ace57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b3360009081526001602052604090205460ff1680610bb5575033610b9d610b3d565b73ffffffffffffffffffffffffffffffffffffffff16145b610bbe57600080fd5b600255565b60016020526000908152604090205460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610bfc610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610c1a610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b610cf6610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610d14610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610e946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574a26469706673582212207cd79b7b5be99c87cb224712dc43c45ea1fc19b6b287fc271a53c07a5afe473364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1044 CODESIZE SUB DUP1 PUSH2 0x1044 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 PUSH2 0x46 PUSH2 0xCD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x2 SSTORE PUSH2 0xD1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xF64 DUP1 PUSH2 0xE0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB9181611 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xB9435C9D EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x328 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x8F7D6278 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x9B87DD91 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xB784C13E EQ PUSH2 0x255 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x49C64F46 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x49C64F46 EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4AFE62B5 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x50152CD0 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x201 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x144F2F94 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x30E4F9AA EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0x426 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0x696 JUMP JUMPDEST PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x69C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0xA20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0xA26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xB3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xB59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0xB75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBC3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xBD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xCEE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x409 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x42E PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x44C PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x4F5 PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x587 PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5A5 PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF05 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x77B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEDC PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP6 SWAP1 MSTORE MLOAD SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x884 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x907 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x706C6163654265743A207472616E73666572206661696C656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 NUMBER DUP2 AND ADD DUP3 DUP2 EQ ISZERO PUSH2 0xA12 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP6 MUL PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEBA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA2E PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA4C PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xACE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0xBB5 JUMPI POP CALLER PUSH2 0xB9D PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xBFC PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC1A PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCF6 PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD14 PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE94 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373736574746C653A2077696E6E65722074 PUSH19 0x616E73666572206661696C6564202D2032706C PUSH2 0x6365 TIMESTAMP PUSH6 0x743A20626574 PUSH21 0x696E6720617373657420616D6F756E74206E6F7420 PUSH6 0x6E6F75676841 PUSH14 0x6F756E74206973206E6F74206772 PUSH6 0x617465722074 PUSH9 0x616E20746865206D69 PUSH15 0x696D756D20626574A2646970667358 0x22 SLT KECCAK256 PUSH29 0xD79B7B5BE99C87CB224712DC43C45EA1FC19B6B287FC271A53C07A5AFE SELFBALANCE CALLER PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "284:1837:10:-:0;;;737:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:202:10;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;836:9:10;:20;;-1:-1:-1;;;;;836:20:10;;;-1:-1:-1;;;;;;836:20:10;;;;;;;870:5;:12;;;;;;;;;;;909:19;896:10;:32;284:1837;;598:104:6;685:10;598:104;:::o;284:1837:10:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063b918161111610059578063b91816111461027f578063b9435c9d146102d3578063cf1c316a146102e8578063f2fde38b14610328576100f3565b80638da5cb5b146102165780638f7d62781461022b5780639b87dd9114610240578063b784c13e14610255576100f3565b806349c64f46116100c657806349c64f46146101b45780634afe62b5146101c957806350152cd0146101ec578063715018a614610201576100f3565b8063144f2f94146100f857806330e4f9aa146101365780633ccfd60b1461015d578063485d7d9414610174575b600080fd5b34801561010457600080fd5b5061010d610368565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014257600080fd5b5061014b610384565b60408051918252519081900360200190f35b34801561016957600080fd5b50610172610426565b005b34801561018057600080fd5b506101726004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661057f565b3480156101c057600080fd5b5061014b610696565b610172600480360360408110156101df57600080fd5b508035906020013561069c565b3480156101f857600080fd5b5061014b610a20565b34801561020d57600080fd5b50610172610a26565b34801561022257600080fd5b5061010d610b3d565b34801561023757600080fd5b5061010d610b59565b34801561024c57600080fd5b5061014b610b75565b34801561026157600080fd5b506101726004803603602081101561027857600080fd5b5035610b7b565b34801561028b57600080fd5b506102bf600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc3565b604080519115158252519081900360200190f35b3480156102df57600080fd5b5061010d610bd8565b3480156102f457600080fd5b506101726004803603602081101561030b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bf4565b34801561033457600080fd5b506101726004803603602081101561034b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cee565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b5051905090565b61042e610e8f565b73ffffffffffffffffffffffffffffffffffffffff1661044c610b3d565b73ffffffffffffffffffffffffffffffffffffffff16146104ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336104f5610384565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561054857600080fd5b505af115801561055c573d6000803e3d6000fd5b505050506040513d602081101561057257600080fd5b505161057d57600080fd5b565b610587610e8f565b73ffffffffffffffffffffffffffffffffffffffff166105a5610b3d565b73ffffffffffffffffffffffffffffffffffffffff161461062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561064a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60065481565b6002548110156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610f05602a913960400191505060405180910390fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d602081101561079157600080fd5b505110156107ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610edc6029913960400191505060405180910390fd5b60035460048054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339381019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301859052519216916323b872dd916064808201926020929091908290030181600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b505050506040513d602081101561089a57600080fd5b505161090757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b60014381160182811415610a1257600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152600285026024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b5051610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eba6022913960400191505060405180910390fd5b505060058054600101905550565b60055481565b610a2e610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610a4c610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ace57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b3360009081526001602052604090205460ff1680610bb5575033610b9d610b3d565b73ffffffffffffffffffffffffffffffffffffffff16145b610bbe57600080fd5b600255565b60016020526000908152604090205460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610bfc610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610c1a610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b610cf6610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610d14610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610e946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574a26469706673582212207cd79b7b5be99c87cb224712dc43c45ea1fc19b6b287fc271a53c07a5afe473364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB9181611 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xB9435C9D EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x328 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x8F7D6278 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x9B87DD91 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xB784C13E EQ PUSH2 0x255 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x49C64F46 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x49C64F46 EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4AFE62B5 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x50152CD0 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x201 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x144F2F94 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x30E4F9AA EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0x426 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0x696 JUMP JUMPDEST PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x69C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0xA20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0xA26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xB3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xB59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH2 0xB75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBC3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0xBD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xCEE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x409 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x42E PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x44C PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x4F5 PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x587 PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5A5 PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF05 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x77B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEDC PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP6 SWAP1 MSTORE MLOAD SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x884 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x907 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x706C6163654265743A207472616E73666572206661696C656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 NUMBER DUP2 AND ADD DUP3 DUP2 EQ ISZERO PUSH2 0xA12 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP6 MUL PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEBA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA2E PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA4C PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xACE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0xBB5 JUMPI POP CALLER PUSH2 0xB9D PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xBFC PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC1A PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCF6 PUSH2 0xE8F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD14 PUSH2 0xB3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE94 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373736574746C653A2077696E6E65722074 PUSH19 0x616E73666572206661696C6564202D2032706C PUSH2 0x6365 TIMESTAMP PUSH6 0x743A20626574 PUSH21 0x696E6720617373657420616D6F756E74206E6F7420 PUSH6 0x6E6F75676841 PUSH14 0x6F756E74206973206E6F74206772 PUSH6 0x617465722074 PUSH9 0x616E20746865206D69 PUSH15 0x696D756D20626574A2646970667358 0x22 SLT KECCAK256 PUSH29 0xD79B7B5BE99C87CB224712DC43C45EA1FC19B6B287FC271A53C07A5AFE SELFBALANCE CALLER PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "284:1837:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1774:119;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1998:116;;;;;;;;;;;;;:::i;:::-;;420:150:9;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;519:28:10:-;;;;;;;;;;;;;:::i;949:812::-;;;;;;;;;;;;;;;;-1:-1:-1;949:812:10;;;;;;;:::i;475:33::-;;;;;;;;;;;;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;1085:85::-;;;;;;;;;;;;;:::i;558:22:10:-;;;;;;;;;;;;;:::i;374:25::-;;;;;;;;;;;;;:::i;1900:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1900:91:10;;:::i;151:42:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;410:24:10;;;;;;;;;;;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;445:20:10:-;;;;;;:::o;1774:119::-;1851:9;;1844:42;;;;;;1880:4;1844:42;;;;;;1822:7;;1851:9;;;1844:27;;:42;;;;;;;;;;;;;;1851:9;1844:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1844:42:10;;-1:-1:-1;1774:119:10;:::o;1998:116::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:9:10::1;::::0;::::1;;2049:26;2076:10;2088:17;:15;:17::i;:::-;2049:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2049:57:10;2041:66:::1;;;::::0;::::1;;1998:116::o:0;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;519:28:10:-;;;;:::o;949:812::-;1043:10;;1033:6;:20;;1025:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1131:9;;1124:39;;;;;;1152:10;1124:39;;;;;;1167:6;;1131:9;;;1124:27;;:39;;;;;;;;;;;;;;1131:9;1124:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1124:39:10;:49;;1116:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1249:9;;1293:5;;;1242:66;;;;;;1273:10;1242:66;;;;;;;1249:9;1293:5;;;1242:66;;;;;;;;;;;1249:9;;;1242:30;;:66;;;;;;;;;;;;;;;1249:9;;1242:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1242:66:10;1234:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:16;:12;:16;;1530:22;1564:25;;;1561:147;;;1615:9;;1608:50;;;;;;1635:10;1608:50;;;;1656:1;1647:10;;1608:50;;;;;;1615:9;;;;;1608:26;;:50;;;;;;;;;;;;;;;1615:9;;1608:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1608:50:10;1600:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1727:18:10;:20;;;;;;-1:-1:-1;949:812:10:o;475:33::-;;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;558:22:10:-;;;;;;:::o;374:25::-;;;;:::o;1900:91::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1965:10:10::1;:19:::0;1900:91::o;151:42:9:-;;;;;;;;;;;;;;;:::o;410:24:10:-;;;;;;:::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ELEPHANT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"BURN\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_burn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_elephant\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_player\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toAdd\",\"type\":\"address\"}],\"name\":\"addAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"betsplacedglobally\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newbet\",\"type\":\"uint256\"}],\"name\":\"changeminbet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastnumberwin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumbet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"placeBet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toRemove\",\"type\":\"address\"}],\"name\":\"removeAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CoinFlip.sol\":\"CoinFlip\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/Authorizable.sol\":{\"keccak256\":\"0xc15372825a5b752d8515abd72d54cbf8556b2b611b26e5f2b6eac9cfdba3e95f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9ffa0813c53c5ab639eecabc06c5f4bc272a378ae3d94583f6569e1de1c5124\",\"dweb:/ipfs/QmWWxnv88Pd6YtFGjgHYtL5t24m2sDrVHV6CrKETZwi2Ci\"]},\"contracts/CoinFlip.sol\":{\"keccak256\":\"0x3844e1aca60426064391ec92baaecccdd67c22186a56c7583753d310ba085d3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://182bcb51bdf5afbe2187f05b8584ab0a4243c9a72c6278ad179a7dd9bfe48d00\",\"dweb:/ipfs/QmW3BcPyseHrcNobtygzPC1mhBQxVFpAnQXDRyfCQvS3am\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ELEPHANT",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "_id",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "_value",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_elephant",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_player",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "betsplacedglobally",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changeminbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "contractbalance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastnumberwin",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "minimumbet",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "placeBet",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b506040516110443803806110448339818101604052604081101561003357600080fd5b50805160209091015160006100466100cd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055674563918244f400006002556100d1565b3390565b610f64806100e06000396000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063b918161111610059578063b91816111461027f578063b9435c9d146102d3578063cf1c316a146102e8578063f2fde38b14610328576100f3565b80638da5cb5b146102165780638f7d62781461022b5780639b87dd9114610240578063b784c13e14610255576100f3565b806349c64f46116100c657806349c64f46146101b45780634afe62b5146101c957806350152cd0146101ec578063715018a614610201576100f3565b8063144f2f94146100f857806330e4f9aa146101365780633ccfd60b1461015d578063485d7d9414610174575b600080fd5b34801561010457600080fd5b5061010d610368565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014257600080fd5b5061014b610384565b60408051918252519081900360200190f35b34801561016957600080fd5b50610172610426565b005b34801561018057600080fd5b506101726004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661057f565b3480156101c057600080fd5b5061014b610696565b610172600480360360408110156101df57600080fd5b508035906020013561069c565b3480156101f857600080fd5b5061014b610a20565b34801561020d57600080fd5b50610172610a26565b34801561022257600080fd5b5061010d610b3d565b34801561023757600080fd5b5061010d610b59565b34801561024c57600080fd5b5061014b610b75565b34801561026157600080fd5b506101726004803603602081101561027857600080fd5b5035610b7b565b34801561028b57600080fd5b506102bf600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc3565b604080519115158252519081900360200190f35b3480156102df57600080fd5b5061010d610bd8565b3480156102f457600080fd5b506101726004803603602081101561030b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bf4565b34801561033457600080fd5b506101726004803603602081101561034b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cee565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b5051905090565b61042e610e8f565b73ffffffffffffffffffffffffffffffffffffffff1661044c610b3d565b73ffffffffffffffffffffffffffffffffffffffff16146104ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336104f5610384565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561054857600080fd5b505af115801561055c573d6000803e3d6000fd5b505050506040513d602081101561057257600080fd5b505161057d57600080fd5b565b610587610e8f565b73ffffffffffffffffffffffffffffffffffffffff166105a5610b3d565b73ffffffffffffffffffffffffffffffffffffffff161461062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561064a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60065481565b6002548110156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610f05602a913960400191505060405180910390fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d602081101561079157600080fd5b505110156107ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610edc6029913960400191505060405180910390fd5b60035460048054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339381019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301859052519216916323b872dd916064808201926020929091908290030181600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b505050506040513d602081101561089a57600080fd5b505161090757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b60014381160182811415610a1257600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152600285026024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b5051610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eba6022913960400191505060405180910390fd5b505060058054600101905550565b60055481565b610a2e610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610a4c610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ace57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b3360009081526001602052604090205460ff1680610bb5575033610b9d610b3d565b73ffffffffffffffffffffffffffffffffffffffff16145b610bbe57600080fd5b600255565b60016020526000908152604090205460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610bfc610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610c1a610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b610cf6610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610d14610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610e946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574a26469706673582212207cd79b7b5be99c87cb224712dc43c45ea1fc19b6b287fc271a53c07a5afe473364736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506040516110443803806110448339818101604052604081101561003357600080fd5b50805160209091015160006100466100cd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055674563918244f400006002556100d1565b3390565b610f64806100e06000396000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063b918161111610059578063b91816111461027f578063b9435c9d146102d3578063cf1c316a146102e8578063f2fde38b14610328576100f3565b80638da5cb5b146102165780638f7d62781461022b5780639b87dd9114610240578063b784c13e14610255576100f3565b806349c64f46116100c657806349c64f46146101b45780634afe62b5146101c957806350152cd0146101ec578063715018a614610201576100f3565b8063144f2f94146100f857806330e4f9aa146101365780633ccfd60b1461015d578063485d7d9414610174575b600080fd5b34801561010457600080fd5b5061010d610368565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014257600080fd5b5061014b610384565b60408051918252519081900360200190f35b34801561016957600080fd5b50610172610426565b005b34801561018057600080fd5b506101726004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661057f565b3480156101c057600080fd5b5061014b610696565b610172600480360360408110156101df57600080fd5b508035906020013561069c565b3480156101f857600080fd5b5061014b610a20565b34801561020d57600080fd5b50610172610a26565b34801561022257600080fd5b5061010d610b3d565b34801561023757600080fd5b5061010d610b59565b34801561024c57600080fd5b5061014b610b75565b34801561026157600080fd5b506101726004803603602081101561027857600080fd5b5035610b7b565b34801561028b57600080fd5b506102bf600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc3565b604080519115158252519081900360200190f35b3480156102df57600080fd5b5061010d610bd8565b3480156102f457600080fd5b506101726004803603602081101561030b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bf4565b34801561033457600080fd5b506101726004803603602081101561034b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cee565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b5051905090565b61042e610e8f565b73ffffffffffffffffffffffffffffffffffffffff1661044c610b3d565b73ffffffffffffffffffffffffffffffffffffffff16146104ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336104f5610384565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561054857600080fd5b505af115801561055c573d6000803e3d6000fd5b505050506040513d602081101561057257600080fd5b505161057d57600080fd5b565b610587610e8f565b73ffffffffffffffffffffffffffffffffffffffff166105a5610b3d565b73ffffffffffffffffffffffffffffffffffffffff161461062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561064a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60065481565b6002548110156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610f05602a913960400191505060405180910390fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d602081101561079157600080fd5b505110156107ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610edc6029913960400191505060405180910390fd5b60035460048054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339381019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301859052519216916323b872dd916064808201926020929091908290030181600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b505050506040513d602081101561089a57600080fd5b505161090757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b60014381160182811415610a1257600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152600285026024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b5051610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eba6022913960400191505060405180910390fd5b505060058054600101905550565b60055481565b610a2e610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610a4c610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ace57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b3360009081526001602052604090205460ff1680610bb5575033610b9d610b3d565b73ffffffffffffffffffffffffffffffffffffffff16145b610bbe57600080fd5b600255565b60016020526000908152604090205460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610bfc610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610c1a610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b610cf6610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610d14610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610e946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574a26469706673582212207cd79b7b5be99c87cb224712dc43c45ea1fc19b6b287fc271a53c07a5afe473364736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063b918161111610059578063b91816111461027f578063b9435c9d146102d3578063cf1c316a146102e8578063f2fde38b14610328576100f3565b80638da5cb5b146102165780638f7d62781461022b5780639b87dd9114610240578063b784c13e14610255576100f3565b806349c64f46116100c657806349c64f46146101b45780634afe62b5146101c957806350152cd0146101ec578063715018a614610201576100f3565b8063144f2f94146100f857806330e4f9aa146101365780633ccfd60b1461015d578063485d7d9414610174575b600080fd5b34801561010457600080fd5b5061010d610368565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014257600080fd5b5061014b610384565b60408051918252519081900360200190f35b34801561016957600080fd5b50610172610426565b005b34801561018057600080fd5b506101726004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661057f565b3480156101c057600080fd5b5061014b610696565b610172600480360360408110156101df57600080fd5b508035906020013561069c565b3480156101f857600080fd5b5061014b610a20565b34801561020d57600080fd5b50610172610a26565b34801561022257600080fd5b5061010d610b3d565b34801561023757600080fd5b5061010d610b59565b34801561024c57600080fd5b5061014b610b75565b34801561026157600080fd5b506101726004803603602081101561027857600080fd5b5035610b7b565b34801561028b57600080fd5b506102bf600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc3565b604080519115158252519081900360200190f35b3480156102df57600080fd5b5061010d610bd8565b3480156102f457600080fd5b506101726004803603602081101561030b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bf4565b34801561033457600080fd5b506101726004803603602081101561034b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cee565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b5051905090565b61042e610e8f565b73ffffffffffffffffffffffffffffffffffffffff1661044c610b3d565b73ffffffffffffffffffffffffffffffffffffffff16146104ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336104f5610384565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561054857600080fd5b505af115801561055c573d6000803e3d6000fd5b505050506040513d602081101561057257600080fd5b505161057d57600080fd5b565b610587610e8f565b73ffffffffffffffffffffffffffffffffffffffff166105a5610b3d565b73ffffffffffffffffffffffffffffffffffffffff161461062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811633141561064a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60065481565b6002548110156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610f05602a913960400191505060405180910390fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d602081101561079157600080fd5b505110156107ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610edc6029913960400191505060405180910390fd5b60035460048054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339381019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301859052519216916323b872dd916064808201926020929091908290030181600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b505050506040513d602081101561089a57600080fd5b505161090757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b60014381160182811415610a1257600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152600285026024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b5051610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eba6022913960400191505060405180910390fd5b505060058054600101905550565b60055481565b610a2e610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610a4c610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ace57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b3360009081526001602052604090205460ff1680610bb5575033610b9d610b3d565b73ffffffffffffffffffffffffffffffffffffffff16145b610bbe57600080fd5b600255565b60016020526000908152604090205460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610bfc610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610c1a610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b610cf6610e8f565b73ffffffffffffffffffffffffffffffffffffffff16610d14610b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610e946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574a26469706673582212207cd79b7b5be99c87cb224712dc43c45ea1fc19b6b287fc271a53c07a5afe473364736f6c634300060c0033",
      "srcmap": "284:1837:10:-:0;;;737:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:202:10;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;836:9:10;:20;;-1:-1:-1;;;;;836:20:10;;;-1:-1:-1;;;;;;836:20:10;;;;;;;870:5;:12;;;;;;;;;;;909:19;896:10;:32;284:1837;;598:104:6;685:10;598:104;:::o;284:1837:10:-;;;;;;;",
      "srcmap-runtime": "284:1837:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1774:119;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1998:116;;;;;;;;;;;;;:::i;:::-;;420:150:9;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;519:28:10:-;;;;;;;;;;;;;:::i;949:812::-;;;;;;;;;;;;;;;;-1:-1:-1;949:812:10;;;;;;;:::i;475:33::-;;;;;;;;;;;;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;1085:85::-;;;;;;;;;;;;;:::i;558:22:10:-;;;;;;;;;;;;;:::i;374:25::-;;;;;;;;;;;;;:::i;1900:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1900:91:10;;:::i;151:42:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;410:24:10;;;;;;;;;;;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;445:20:10:-;;;;;;:::o;1774:119::-;1851:9;;1844:42;;;;;;1880:4;1844:42;;;;;;1822:7;;1851:9;;;1844:27;;:42;;;;;;;;;;;;;;1851:9;1844:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1844:42:10;;-1:-1:-1;1774:119:10;:::o;1998:116::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:9:10::1;::::0;::::1;;2049:26;2076:10;2088:17;:15;:17::i;:::-;2049:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2049:57:10;2041:66:::1;;;::::0;::::1;;1998:116::o:0;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;519:28:10:-;;;;:::o;949:812::-;1043:10;;1033:6;:20;;1025:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1131:9;;1124:39;;;;;;1152:10;1124:39;;;;;;1167:6;;1131:9;;;1124:27;;:39;;;;;;;;;;;;;;1131:9;1124:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1124:39:10;:49;;1116:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1249:9;;1293:5;;;1242:66;;;;;;1273:10;1242:66;;;;;;;1249:9;1293:5;;;1242:66;;;;;;;;;;;1249:9;;;1242:30;;:66;;;;;;;;;;;;;;;1249:9;;1242:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1242:66:10;1234:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:16;:12;:16;;1530:22;1564:25;;;1561:147;;;1615:9;;1608:50;;;;;;1635:10;1608:50;;;;1656:1;1647:10;;1608:50;;;;;;1615:9;;;;;1608:26;;:50;;;;;;;;;;;;;;;1615:9;;1608:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1608:50:10;1600:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1727:18:10;:20;;;;;;-1:-1:-1;949:812:10:o;475:33::-;;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;558:22:10:-;;;;;;:::o;374:25::-;;;;:::o;1900:91::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1965:10:10::1;:19:::0;1900:91::o;151:42:9:-;;;;;;;;;;;;;;;:::o;410:24:10:-;;;;;;:::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o"
    },
    "contracts/Dice.sol:Dice": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ELEPHANT",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "MAXBETS",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "_bets",
          "outputs": [
            {
              "internalType": "address",
              "name": "degen",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_elephant",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_guesses",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_players",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_totals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changemaxbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changeminbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "contractbalance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "numberGenerated",
              "type": "uint256"
            }
          ],
          "name": "distributePrizes",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "generateNumberWinner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastnumberwin",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maximumBets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "minimumbet",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "numberOfBets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "placeBet",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "tenbets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516119663803806119668339818101604052606081101561003357600080fd5b5080516020820151604090920151909190600061004e6100dc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b039485166001600160a01b0319918216179091556005805493909416921691909117909155600255674563918244f400006003556100e0565b3390565b611877806100ef6000396000f3fe60806040526004361061018b5760003560e01c8063715018a6116100d6578063b9435c9d1161007f578063e957b88f11610059578063e957b88f146104f2578063f2fde38b1461051c578063f64452ba1461055c5761018b565b8063b9435c9d14610473578063bcb8aaf314610488578063cf1c316a146104b25761018b565b80639b87dd91116100b05780639b87dd91146103e0578063b784c13e146103f5578063b91816111461041f5761018b565b8063715018a61461034157806387d68367146103565780638da5cb5b146103cb5761018b565b806341587823116101385780634afe62b5116101125780634afe62b5146102df5780635d5391d5146103025780636ca3fc3b146103175761018b565b80634158782314610260578063485d7d941461028a57806349c64f46146102ca5761018b565b806330e4f9aa1161016957806330e4f9aa1461020c578063356476f0146102215780633ccfd60b1461024b5761018b565b80630a50e36114610190578063144f2f94146101a75780632ca8c6d3146101e5575b600080fd5b34801561019c57600080fd5b506101a561058c565b005b3480156101b357600080fd5b506101bc6105ed565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101f157600080fd5b506101fa610609565b60408051918252519081900360200190f35b34801561021857600080fd5b506101fa61060f565b34801561022d57600080fd5b506101fa6004803603602081101561024457600080fd5b50356106b5565b34801561025757600080fd5b506101a56106c7565b34801561026c57600080fd5b506101bc6004803603602081101561028357600080fd5b50356107bb565b34801561029657600080fd5b506101a5600480360360208110156102ad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b3480156102d657600080fd5b506101fa610906565b6101a5600480360360408110156102f557600080fd5b508035906020013561090c565b34801561030e57600080fd5b506101fa610c7a565b34801561032357600080fd5b506101a56004803603602081101561033a57600080fd5b5035610c80565b34801561034d57600080fd5b506101a5610f9d565b34801561036257600080fd5b506103966004803603602081101561037957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b4565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b3480156103d757600080fd5b506101bc6110ec565b3480156103ec57600080fd5b506101fa611108565b34801561040157600080fd5b506101a56004803603602081101561041857600080fd5b503561110e565b34801561042b57600080fd5b5061045f6004803603602081101561044257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611156565b604080519115158252519081900360200190f35b34801561047f57600080fd5b506101bc61116b565b34801561049457600080fd5b506101a5600480360360208110156104ab57600080fd5b5035611187565b3480156104be57600080fd5b506101a5600480360360208110156104d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b3480156104fe57600080fd5b506101fa6004803603602081101561051557600080fd5b50356112c9565b34801561052857600080fd5b506101a56004803603602081101561053f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e7565b34801561056857600080fd5b506101bc6004803603604081101561057f57600080fd5b5080359060200135611488565b6009805460018082018355600083905260064306017f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9091018190559054600510156105dc576105dc60006114ca565b60078190556105ea81610c80565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d60208110156106ae57600080fd5b5051905090565b600b6020526000908152604090205481565b3360009081526001602052604090205460ff16806107015750336106e96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61070a57600080fd5b60045473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361073161060f565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516107b957600080fd5b565b600881815481106107c857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6107f7611559565b73ffffffffffffffffffffffffffffffffffffffff166108156110ec565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156108ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075481565b600354811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117f7602a913960400191505060405180910390fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152339381019390935251839273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b50511015610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806117ce6029913960400191505060405180910390fd5b60048054600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015260448401859052519116916323b872dd9160648083019260209291908290030181600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b7a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b6008805460018082019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556040805160608101825283815260208082018781528284018981526000878152600c845285812094518554881673ffffffffffffffffffffffffffffffffffffffff90911617855591518489015551600293840155888152600a825283812080548089018255908252828220018054909516909517909355868452600b90925290912080548401905560068054909201918290555411610c7657610c7661058c565b5050565b60025481565b6000818152600a6020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cc2575b50505050509050600081511115610ea95760005b8151811015610ea757610d1261165a565b600c6000848481518110610d2257fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081208351606081018552815490951685526001810154928501839052600201549284019290925291925090610d9b90606690610d959061025861155d565b906115d9565b600480548451604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094526024840185905251939450169163a9059cbb916044808201926020929091908290030181600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b505050506040513d6020811015610e4657600080fd5b5051610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117ac6022913960400191505060405180910390fd5b5050600101610d01565b505b60005b600354811015610f3557600c600060088381548110610ec757fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810183905560029091019190915501610eac565b506040805160008152602081019182905251610f5391600891611691565b5060066000905560005b6006811015610f9857600181016000908152600a60205260408120610f819161171b565b6001016000818152600b6020526040812055610f5d565b505050565b610fa5611559565b73ffffffffffffffffffffffffffffffffffffffff16610fc36110ec565b73ffffffffffffffffffffffffffffffffffffffff161461104557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600c6020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b3360009081526001602052604090205460ff16806111485750336111306110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61115157600080fd5b600355565b60016020526000908152604090205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806111c15750336111a96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b6111ca57600080fd5b600255565b6111d7611559565b73ffffffffffffffffffffffffffffffffffffffff166111f56110ec565b73ffffffffffffffffffffffffffffffffffffffff161461127757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600981815481106112d657fe5b600091825260209091200154905081565b6112ef611559565b73ffffffffffffffffffffffffffffffffffffffff1661130d6110ec565b73ffffffffffffffffffffffffffffffffffffffff161461138f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117866026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a60205281600052604060002081815481106114a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b805b6009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811015611534576009816001018154811061150857fe5b90600052602060002001546009828154811061152057fe5b6000918252602090912001556001016114cc565b50600980548061154057fe5b6001900381819060005260206000200160009055905550565b3390565b60008261156c575060006115d3565b8282028284828161157957fe5b04146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118216021913960400191505060405180910390fd5b90505b92915050565b600080821161164957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165257fe5b049392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b82805482825590600052602060002090810192821561170b579160200282015b8281111561170b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906116b1565b50611717929150611739565b5090565b50805460008255906000526020600020908101906105ea9190611770565b5b808211156117175780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010161173a565b5b80821115611717576000815560010161177156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ef27c6785b72be218eb0ae78aee75dceb896bdffd4d65eb0e7e8b987a478a64364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1966 CODESIZE SUB DUP1 PUSH2 0x1966 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x0 PUSH2 0x4E PUSH2 0xDC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x3 SSTORE PUSH2 0xE0 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1877 DUP1 PUSH2 0xEF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB9435C9D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE957B88F GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE957B88F EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0xF64452BA EQ PUSH2 0x55C JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0xB9435C9D EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0xBCB8AAF3 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x4B2 JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x9B87DD91 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9B87DD91 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB784C13E EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x41F JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x87D68367 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3CB JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x41587823 GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x4AFE62B5 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x4AFE62B5 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x5D5391D5 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x6CA3FC3B EQ PUSH2 0x317 JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x41587823 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x49C64F46 EQ PUSH2 0x2CA JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x30E4F9AA GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x30E4F9AA EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x356476F0 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x24B JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0xA50E361 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x144F2F94 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x2CA8C6D3 EQ PUSH2 0x1E5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x58C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x609 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x60F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x6C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x906 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0xC7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0xF9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x10B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x10EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x1108 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1156 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x116B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1187 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x57F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1488 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 SWAP1 MSTORE PUSH1 0x6 NUMBER MOD ADD PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP1 SWAP2 ADD DUP2 SWAP1 SSTORE SWAP1 SLOAD PUSH1 0x5 LT ISZERO PUSH2 0x5DC JUMPI PUSH2 0x5DC PUSH1 0x0 PUSH2 0x14CA JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH2 0x5EA DUP2 PUSH2 0xC80 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x698 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x701 JUMPI POP CALLER PUSH2 0x6E9 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x731 PUSH2 0x60F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x798 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7C8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x7F7 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x815 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x897 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x967 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17F7 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17CE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x706C6163654265743A207472616E73666572206661696C656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 ADD DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE DUP3 DUP5 ADD DUP10 DUP2 MSTORE PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xC DUP5 MSTORE DUP6 DUP2 KECCAK256 SWAP5 MLOAD DUP6 SLOAD DUP9 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP6 SSTORE SWAP2 MLOAD DUP5 DUP10 ADD SSTORE MLOAD PUSH1 0x2 SWAP4 DUP5 ADD SSTORE DUP9 DUP2 MSTORE PUSH1 0xA DUP3 MSTORE DUP4 DUP2 KECCAK256 DUP1 SLOAD DUP1 DUP10 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE DUP3 DUP3 KECCAK256 ADD DUP1 SLOAD SWAP1 SWAP6 AND SWAP1 SWAP6 OR SWAP1 SWAP4 SSTORE DUP7 DUP5 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SLOAD GT PUSH2 0xC76 JUMPI PUSH2 0xC76 PUSH2 0x58C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCED JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCC2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xEA7 JUMPI PUSH2 0xD12 PUSH2 0x165A JUMP JUMPDEST PUSH1 0xC PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD22 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x1 DUP2 ADD SLOAD SWAP3 DUP6 ADD DUP4 SWAP1 MSTORE PUSH1 0x2 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xD9B SWAP1 PUSH1 0x66 SWAP1 PUSH2 0xD95 SWAP1 PUSH2 0x258 PUSH2 0x155D JUMP JUMPDEST SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD DUP6 SWAP1 MSTORE MLOAD SWAP4 SWAP5 POP AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xE9D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AC PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0xD01 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xF35 JUMPI PUSH1 0xC PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEC7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 SSTORE ADD PUSH2 0xEAC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE MLOAD PUSH2 0xF53 SWAP2 PUSH1 0x8 SWAP2 PUSH2 0x1691 JUMP JUMPDEST POP PUSH1 0x6 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x6 DUP2 LT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xF81 SWAP2 PUSH2 0x171B JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0xF5D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFA5 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFC3 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1045 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1148 JUMPI POP CALLER PUSH2 0x1130 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x11C1 JUMPI POP CALLER PUSH2 0x11A9 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x11CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH2 0x11D7 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11F5 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1277 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12D6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x12EF PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x130D PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x138F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x13FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1786 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x14A1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x9 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP2 LT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x9 DUP2 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT PUSH2 0x1508 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x9 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1520 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH1 0x1 ADD PUSH2 0x14CC JUMP JUMPDEST POP PUSH1 0x9 DUP1 SLOAD DUP1 PUSH2 0x1540 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x156C JUMPI POP PUSH1 0x0 PUSH2 0x15D3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1579 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x15D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1821 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1652 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x170B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x170B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x16B1 JUMP JUMPDEST POP PUSH2 0x1717 SWAP3 SWAP2 POP PUSH2 0x1739 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5EA SWAP2 SWAP1 PUSH2 0x1770 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1717 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x173A JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1717 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1771 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373736574746C653A2077696E6E65722074 PUSH19 0x616E73666572206661696C6564202D2032706C PUSH2 0x6365 TIMESTAMP PUSH6 0x743A20626574 PUSH21 0x696E6720617373657420616D6F756E74206E6F7420 PUSH6 0x6E6F75676841 PUSH14 0x6F756E74206973206E6F74206772 PUSH6 0x617465722074 PUSH9 0x616E20746865206D69 PUSH15 0x696D756D20626574536166654D6174 PUSH9 0x3A206D756C7469706C PUSH10 0x636174696F6E206F7665 PUSH19 0x666C6F77A2646970667358221220EF27C6785B PUSH19 0xBE218EB0AE78AEE75DCEB896BDFFD4D65EB0E7 0xE8 0xB9 DUP8 LOG4 PUSH25 0xA64364736F6C634300060C0033000000000000000000000000 ",
          "sourceMap": "254:3728:11:-:0;;;967:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;967:266:11;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;1095:9:11;:20;;-1:-1:-1;;;;;1095:20:11;;;-1:-1:-1;;;;;;1095:20:11;;;;;;;1129:5;:12;;;;;;;;;;;;;;;1155:11;:21;1203:19;-1:-1:-1;1190:32:11;254:3728;;598:104:6;685:10;598:104;:::o;254:3728:11:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "60806040526004361061018b5760003560e01c8063715018a6116100d6578063b9435c9d1161007f578063e957b88f11610059578063e957b88f146104f2578063f2fde38b1461051c578063f64452ba1461055c5761018b565b8063b9435c9d14610473578063bcb8aaf314610488578063cf1c316a146104b25761018b565b80639b87dd91116100b05780639b87dd91146103e0578063b784c13e146103f5578063b91816111461041f5761018b565b8063715018a61461034157806387d68367146103565780638da5cb5b146103cb5761018b565b806341587823116101385780634afe62b5116101125780634afe62b5146102df5780635d5391d5146103025780636ca3fc3b146103175761018b565b80634158782314610260578063485d7d941461028a57806349c64f46146102ca5761018b565b806330e4f9aa1161016957806330e4f9aa1461020c578063356476f0146102215780633ccfd60b1461024b5761018b565b80630a50e36114610190578063144f2f94146101a75780632ca8c6d3146101e5575b600080fd5b34801561019c57600080fd5b506101a561058c565b005b3480156101b357600080fd5b506101bc6105ed565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101f157600080fd5b506101fa610609565b60408051918252519081900360200190f35b34801561021857600080fd5b506101fa61060f565b34801561022d57600080fd5b506101fa6004803603602081101561024457600080fd5b50356106b5565b34801561025757600080fd5b506101a56106c7565b34801561026c57600080fd5b506101bc6004803603602081101561028357600080fd5b50356107bb565b34801561029657600080fd5b506101a5600480360360208110156102ad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b3480156102d657600080fd5b506101fa610906565b6101a5600480360360408110156102f557600080fd5b508035906020013561090c565b34801561030e57600080fd5b506101fa610c7a565b34801561032357600080fd5b506101a56004803603602081101561033a57600080fd5b5035610c80565b34801561034d57600080fd5b506101a5610f9d565b34801561036257600080fd5b506103966004803603602081101561037957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b4565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b3480156103d757600080fd5b506101bc6110ec565b3480156103ec57600080fd5b506101fa611108565b34801561040157600080fd5b506101a56004803603602081101561041857600080fd5b503561110e565b34801561042b57600080fd5b5061045f6004803603602081101561044257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611156565b604080519115158252519081900360200190f35b34801561047f57600080fd5b506101bc61116b565b34801561049457600080fd5b506101a5600480360360208110156104ab57600080fd5b5035611187565b3480156104be57600080fd5b506101a5600480360360208110156104d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b3480156104fe57600080fd5b506101fa6004803603602081101561051557600080fd5b50356112c9565b34801561052857600080fd5b506101a56004803603602081101561053f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e7565b34801561056857600080fd5b506101bc6004803603604081101561057f57600080fd5b5080359060200135611488565b6009805460018082018355600083905260064306017f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9091018190559054600510156105dc576105dc60006114ca565b60078190556105ea81610c80565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d60208110156106ae57600080fd5b5051905090565b600b6020526000908152604090205481565b3360009081526001602052604090205460ff16806107015750336106e96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61070a57600080fd5b60045473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361073161060f565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516107b957600080fd5b565b600881815481106107c857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6107f7611559565b73ffffffffffffffffffffffffffffffffffffffff166108156110ec565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156108ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075481565b600354811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117f7602a913960400191505060405180910390fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152339381019390935251839273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b50511015610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806117ce6029913960400191505060405180910390fd5b60048054600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015260448401859052519116916323b872dd9160648083019260209291908290030181600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b7a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b6008805460018082019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556040805160608101825283815260208082018781528284018981526000878152600c845285812094518554881673ffffffffffffffffffffffffffffffffffffffff90911617855591518489015551600293840155888152600a825283812080548089018255908252828220018054909516909517909355868452600b90925290912080548401905560068054909201918290555411610c7657610c7661058c565b5050565b60025481565b6000818152600a6020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cc2575b50505050509050600081511115610ea95760005b8151811015610ea757610d1261165a565b600c6000848481518110610d2257fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081208351606081018552815490951685526001810154928501839052600201549284019290925291925090610d9b90606690610d959061025861155d565b906115d9565b600480548451604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094526024840185905251939450169163a9059cbb916044808201926020929091908290030181600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b505050506040513d6020811015610e4657600080fd5b5051610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117ac6022913960400191505060405180910390fd5b5050600101610d01565b505b60005b600354811015610f3557600c600060088381548110610ec757fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810183905560029091019190915501610eac565b506040805160008152602081019182905251610f5391600891611691565b5060066000905560005b6006811015610f9857600181016000908152600a60205260408120610f819161171b565b6001016000818152600b6020526040812055610f5d565b505050565b610fa5611559565b73ffffffffffffffffffffffffffffffffffffffff16610fc36110ec565b73ffffffffffffffffffffffffffffffffffffffff161461104557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600c6020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b3360009081526001602052604090205460ff16806111485750336111306110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61115157600080fd5b600355565b60016020526000908152604090205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806111c15750336111a96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b6111ca57600080fd5b600255565b6111d7611559565b73ffffffffffffffffffffffffffffffffffffffff166111f56110ec565b73ffffffffffffffffffffffffffffffffffffffff161461127757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600981815481106112d657fe5b600091825260209091200154905081565b6112ef611559565b73ffffffffffffffffffffffffffffffffffffffff1661130d6110ec565b73ffffffffffffffffffffffffffffffffffffffff161461138f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117866026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a60205281600052604060002081815481106114a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b805b6009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811015611534576009816001018154811061150857fe5b90600052602060002001546009828154811061152057fe5b6000918252602090912001556001016114cc565b50600980548061154057fe5b6001900381819060005260206000200160009055905550565b3390565b60008261156c575060006115d3565b8282028284828161157957fe5b04146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118216021913960400191505060405180910390fd5b90505b92915050565b600080821161164957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165257fe5b049392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b82805482825590600052602060002090810192821561170b579160200282015b8281111561170b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906116b1565b50611717929150611739565b5090565b50805460008255906000526020600020908101906105ea9190611770565b5b808211156117175780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010161173a565b5b80821115611717576000815560010161177156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ef27c6785b72be218eb0ae78aee75dceb896bdffd4d65eb0e7e8b987a478a64364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB9435C9D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE957B88F GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE957B88F EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0xF64452BA EQ PUSH2 0x55C JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0xB9435C9D EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0xBCB8AAF3 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x4B2 JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x9B87DD91 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9B87DD91 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB784C13E EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x41F JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x87D68367 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3CB JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x41587823 GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x4AFE62B5 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x4AFE62B5 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x5D5391D5 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x6CA3FC3B EQ PUSH2 0x317 JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x41587823 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x49C64F46 EQ PUSH2 0x2CA JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0x30E4F9AA GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x30E4F9AA EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x356476F0 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x24B JUMPI PUSH2 0x18B JUMP JUMPDEST DUP1 PUSH4 0xA50E361 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x144F2F94 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x2CA8C6D3 EQ PUSH2 0x1E5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x58C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x609 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x60F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x6C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x906 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0xC7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0xF9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x10B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x10EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x1108 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x110E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1156 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x116B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1187 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x57F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1488 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 SWAP1 MSTORE PUSH1 0x6 NUMBER MOD ADD PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP1 SWAP2 ADD DUP2 SWAP1 SSTORE SWAP1 SLOAD PUSH1 0x5 LT ISZERO PUSH2 0x5DC JUMPI PUSH2 0x5DC PUSH1 0x0 PUSH2 0x14CA JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH2 0x5EA DUP2 PUSH2 0xC80 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x698 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x701 JUMPI POP CALLER PUSH2 0x6E9 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x731 PUSH2 0x60F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x798 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7C8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x7F7 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x815 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x897 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x967 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17F7 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17CE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x706C6163654265743A207472616E73666572206661696C656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 ADD DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE DUP3 DUP5 ADD DUP10 DUP2 MSTORE PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xC DUP5 MSTORE DUP6 DUP2 KECCAK256 SWAP5 MLOAD DUP6 SLOAD DUP9 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP6 SSTORE SWAP2 MLOAD DUP5 DUP10 ADD SSTORE MLOAD PUSH1 0x2 SWAP4 DUP5 ADD SSTORE DUP9 DUP2 MSTORE PUSH1 0xA DUP3 MSTORE DUP4 DUP2 KECCAK256 DUP1 SLOAD DUP1 DUP10 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE DUP3 DUP3 KECCAK256 ADD DUP1 SLOAD SWAP1 SWAP6 AND SWAP1 SWAP6 OR SWAP1 SWAP4 SSTORE DUP7 DUP5 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SLOAD GT PUSH2 0xC76 JUMPI PUSH2 0xC76 PUSH2 0x58C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xCED JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCC2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xEA7 JUMPI PUSH2 0xD12 PUSH2 0x165A JUMP JUMPDEST PUSH1 0xC PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD22 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP4 MLOAD PUSH1 0x60 DUP2 ADD DUP6 MSTORE DUP2 SLOAD SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x1 DUP2 ADD SLOAD SWAP3 DUP6 ADD DUP4 SWAP1 MSTORE PUSH1 0x2 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xD9B SWAP1 PUSH1 0x66 SWAP1 PUSH2 0xD95 SWAP1 PUSH2 0x258 PUSH2 0x155D JUMP JUMPDEST SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP5 ADD DUP6 SWAP1 MSTORE MLOAD SWAP4 SWAP5 POP AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xE9D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AC PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0xD01 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xF35 JUMPI PUSH1 0xC PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEC7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 SSTORE ADD PUSH2 0xEAC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE MLOAD PUSH2 0xF53 SWAP2 PUSH1 0x8 SWAP2 PUSH2 0x1691 JUMP JUMPDEST POP PUSH1 0x6 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x6 DUP2 LT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xF81 SWAP2 PUSH2 0x171B JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0xF5D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFA5 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFC3 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1045 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1148 JUMPI POP CALLER PUSH2 0x1130 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x11C1 JUMPI POP CALLER PUSH2 0x11A9 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x11CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH2 0x11D7 PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11F5 PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1277 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12D6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x12EF PUSH2 0x1559 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x130D PUSH2 0x10EC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x138F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x13FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1786 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x14A1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x9 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP2 LT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x9 DUP2 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT PUSH2 0x1508 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x9 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1520 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH1 0x1 ADD PUSH2 0x14CC JUMP JUMPDEST POP PUSH1 0x9 DUP1 SLOAD DUP1 PUSH2 0x1540 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x156C JUMPI POP PUSH1 0x0 PUSH2 0x15D3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1579 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x15D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1821 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1649 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1652 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x170B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x170B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x16B1 JUMP JUMPDEST POP PUSH2 0x1717 SWAP3 SWAP2 POP PUSH2 0x1739 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5EA SWAP2 SWAP1 PUSH2 0x1770 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1717 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x173A JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1717 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1771 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373736574746C653A2077696E6E65722074 PUSH19 0x616E73666572206661696C6564202D2032706C PUSH2 0x6365 TIMESTAMP PUSH6 0x743A20626574 PUSH21 0x696E6720617373657420616D6F756E74206E6F7420 PUSH6 0x6E6F75676841 PUSH14 0x6F756E74206973206E6F74206772 PUSH6 0x617465722074 PUSH9 0x616E20746865206D69 PUSH15 0x696D756D20626574536166654D6174 PUSH9 0x3A206D756C7469706C PUSH10 0x636174696F6E206F7665 PUSH19 0x666C6F77A2646970667358221220EF27C6785B PUSH19 0xBE218EB0AE78AEE75DCEB896BDFFD4D65EB0E7 0xE8 0xB9 DUP8 LOG4 PUSH25 0xA64364736F6C634300060C0033000000000000000000000000 ",
          "sourceMap": "254:3728:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:313;;;;;;;;;;;;;:::i;:::-;;562:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;593:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3533:119;;;;;;;;;;;;;:::i;867:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;867:42:11;;:::i;3854:121::-;;;;;;;;;;;;;:::i;669:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;669:25:11;;:::i;420:150:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;630:28:11:-;;;;;;;;;;;;;:::i;1243:833::-;;;;;;;;;;;;;;;;-1:-1:-1;1243:833:11;;;;;;;:::i;455:26::-;;;;;;;;;;;;;:::i;2631:896::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2631:896:11;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;920:36:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:36:11;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:85:0;;;;;;;;;;;;;:::i;491:25:11:-;;;;;;;;;;;;;:::i;3756:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3756:91:11;;:::i;151:42:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;527:24:11;;;;;;;;;;;;;:::i;3657:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3657:92:11;;:::i;316:98:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;706:24:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:24:11;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;776:45:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:45:11;;;;;;;:::i;2305:313::-;2420:7;:29;;2405:1;2420:29;;;;;2358:23;2420:29;;;2400:1;2385:12;:16;2384:22;2420:29;;;;;;;2481:14;;2498:1;-1:-1:-1;2478:37:11;;;2501:14;2513:1;2501:11;:14::i;:::-;2529:13;:31;;;2574:33;2545:15;2574:16;:33::i;:::-;2305:313;:::o;562:20::-;;;;;;:::o;593:27::-;;;;:::o;3533:119::-;3610:9;;;3603:42;;;;;;3639:4;3603:42;;;;;;;;3581:7;;3610:9;;;;;3603:27;;:42;;;;;;;;;;;;;;3610:9;3603:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3603:42:11;;-1:-1:-1;3533:119:11;:::o;867:42::-;;;;;;;;;;;;;:::o;3854:121::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3917:9:11::1;::::0;::::1;;3910:26;3937:10;3949:17;:15;:17::i;:::-;3910:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;3910:57:11;3902:66:::1;;;::::0;::::1;;3854:121::o:0;669:25::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;669:25:11;:::o;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;630:28:11:-;;;;:::o;1243:833::-;1337:10;;1327:6;:20;;1319:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:9;;;1417:39;;;;;;1445:10;1417:39;;;;;;;;1460:6;;1424:9;;;;;1417:27;;:39;;;;;;;;;;;;;;1424:9;1417:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1417:39:11;:49;;1409:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:9;;;1586:5;;1535:66;;;;;;1566:10;1535:66;;;;;;;1542:9;1586:5;;;1535:66;;;;;;;;;;;1542:9;;;1535:30;;:66;;;;;;;;;;;;;;1542:9;;1535:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1535:66:11;1527:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1687:8;:25;;;;;;;;;;;;;1701:10;1687:25;;;;;;;;;1777:31;;;;;;;;;;;1687:25;1777:31;;;;;;;;;;;;-1:-1:-1;1757:17:11;;;:5;:17;;;;;:51;;;;;;1687:25;1757:51;;;;;;;;;;;;;;;;;;1860:16;;;:8;:16;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;1939:15;;;:7;:15;;;;;;:25;;;;;;1979:12;:14;;;;;;;;;2030:11;-1:-1:-1;2010:55:11;;2043:22;:20;:22::i;:::-;1243:833;;:::o;455:26::-;;;;:::o;2631:896::-;2730:25;;;;:8;:25;;;;;;;;;2703:52;;;;;;;;;;;;;;;;;:24;;:52;;;2730:25;2703:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:1;2774:7;:14;:18;2770:364;;;2817:9;2812:308;2836:7;:14;2832:1;:18;2812:308;;;2879:17;;:::i;:::-;2899:5;:17;2905:7;2913:1;2905:10;;;;;;;;;;;;;;;;;;;2899:17;;;;;;;;;;;;;;;;;-1:-1:-1;2899:17:11;;;2879:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2954:31:11;;2981:3;;2954:22;;2972:3;2954:17;:22::i;:::-;:26;;:31::i;:::-;3022:9;;;3042:12;;3015:47;;;;;;3022:9;3015:47;;;;;;;;;;;;;;;;;2938;;-1:-1:-1;3022:9:11;;3015:26;;:47;;;;;;;;;;;;;;;3022:9;;3015:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3015:47:11;3007:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2852:3:11;;2812:308;;;;2770:364;3158:9;3153:103;3177:10;;3173:1;:14;3153:103;;;3223:5;:18;3229:8;3238:1;3229:11;;;;;;;;;;;;;;;;;;;;;;3223:18;;;;;;;;;;;;3216:25;;;;;;3229:11;3216:25;;;;;;;;;;;;;;3189:3;3153:103;;;-1:-1:-1;3281:16:11;;;3295:1;3281:16;;;;;;;;;3270:27;;;:8;;:27;:::i;:::-;;3318:12;3311:19;;;3350:9;3345:172;3369:1;3365;:5;3345:172;;;3415:1;3411:5;;3402:15;;;;:8;:15;;;;;3395:22;;;:::i;:::-;3454:1;3450:5;3442:14;;;;:7;:14;;;;;3435:21;3345:172;;;;2631:896;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;920:36:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1085:85:0:-;1131:7;1157:6;;;1085:85;:::o;491:25:11:-;;;;:::o;3756:91::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3821:10:11::1;:19:::0;3756:91::o;151:42:9:-;;;;;;;;;;;;;;;:::o;527:24:11:-;;;;;;:::o;3657:92::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3722:11:11::1;:20:::0;3657:92::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;706:24:11:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:24:11;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;776:45:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:45:11;;-1:-1:-1;776:45:11:o;2094:201::-;2164:5;2151:107;2175:7;:14;:18;;2171:22;;2151:107;;;2230:7;2238:1;2241;2238:4;2230:13;;;;;;;;;;;;;;;;2217:7;2225:1;2217:10;;;;;;;;;;;;;;;;;:26;2195:3;;2151:107;;;;2271:7;:13;;;;;;;;;;;;;;;;;;;;;;;;2094:201;:::o;598:104:6:-;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ELEPHANT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"BURN\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"MAXBETS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_bets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"degen\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_burn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_elephant\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_guesses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_players\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_totals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toAdd\",\"type\":\"address\"}],\"name\":\"addAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newbet\",\"type\":\"uint256\"}],\"name\":\"changemaxbet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newbet\",\"type\":\"uint256\"}],\"name\":\"changeminbet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numberGenerated\",\"type\":\"uint256\"}],\"name\":\"distributePrizes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generateNumberWinner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastnumberwin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maximumBets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumbet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfBets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"placeBet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toRemove\",\"type\":\"address\"}],\"name\":\"removeAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tenbets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Dice.sol\":\"Dice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/Authorizable.sol\":{\"keccak256\":\"0xc15372825a5b752d8515abd72d54cbf8556b2b611b26e5f2b6eac9cfdba3e95f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9ffa0813c53c5ab639eecabc06c5f4bc272a378ae3d94583f6569e1de1c5124\",\"dweb:/ipfs/QmWWxnv88Pd6YtFGjgHYtL5t24m2sDrVHV6CrKETZwi2Ci\"]},\"contracts/Dice.sol\":{\"keccak256\":\"0x5b2958ed2667714c48a65aa9188924cefaf0631b8dd904161587c96e4e6dc3b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdf765b73059dbdfa6d9b588b447ef91cba0ed2bff37ce32e97e8a73a45ec988\",\"dweb:/ipfs/QmP2ehSX4ja2TfTs7G459qNHmSpDMX5Ct2Fiza5GPdVzQP\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ELEPHANT",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "MAXBETS",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "_bets",
          "outputs": [
            {
              "internalType": "address",
              "name": "degen",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_elephant",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_guesses",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_players",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "_totals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changemaxbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newbet",
              "type": "uint256"
            }
          ],
          "name": "changeminbet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "contractbalance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "numberGenerated",
              "type": "uint256"
            }
          ],
          "name": "distributePrizes",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "generateNumberWinner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastnumberwin",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maximumBets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "minimumbet",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "numberOfBets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "placeBet",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "tenbets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b506040516119663803806119668339818101604052606081101561003357600080fd5b5080516020820151604090920151909190600061004e6100dc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b039485166001600160a01b0319918216179091556005805493909416921691909117909155600255674563918244f400006003556100e0565b3390565b611877806100ef6000396000f3fe60806040526004361061018b5760003560e01c8063715018a6116100d6578063b9435c9d1161007f578063e957b88f11610059578063e957b88f146104f2578063f2fde38b1461051c578063f64452ba1461055c5761018b565b8063b9435c9d14610473578063bcb8aaf314610488578063cf1c316a146104b25761018b565b80639b87dd91116100b05780639b87dd91146103e0578063b784c13e146103f5578063b91816111461041f5761018b565b8063715018a61461034157806387d68367146103565780638da5cb5b146103cb5761018b565b806341587823116101385780634afe62b5116101125780634afe62b5146102df5780635d5391d5146103025780636ca3fc3b146103175761018b565b80634158782314610260578063485d7d941461028a57806349c64f46146102ca5761018b565b806330e4f9aa1161016957806330e4f9aa1461020c578063356476f0146102215780633ccfd60b1461024b5761018b565b80630a50e36114610190578063144f2f94146101a75780632ca8c6d3146101e5575b600080fd5b34801561019c57600080fd5b506101a561058c565b005b3480156101b357600080fd5b506101bc6105ed565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101f157600080fd5b506101fa610609565b60408051918252519081900360200190f35b34801561021857600080fd5b506101fa61060f565b34801561022d57600080fd5b506101fa6004803603602081101561024457600080fd5b50356106b5565b34801561025757600080fd5b506101a56106c7565b34801561026c57600080fd5b506101bc6004803603602081101561028357600080fd5b50356107bb565b34801561029657600080fd5b506101a5600480360360208110156102ad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b3480156102d657600080fd5b506101fa610906565b6101a5600480360360408110156102f557600080fd5b508035906020013561090c565b34801561030e57600080fd5b506101fa610c7a565b34801561032357600080fd5b506101a56004803603602081101561033a57600080fd5b5035610c80565b34801561034d57600080fd5b506101a5610f9d565b34801561036257600080fd5b506103966004803603602081101561037957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b4565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b3480156103d757600080fd5b506101bc6110ec565b3480156103ec57600080fd5b506101fa611108565b34801561040157600080fd5b506101a56004803603602081101561041857600080fd5b503561110e565b34801561042b57600080fd5b5061045f6004803603602081101561044257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611156565b604080519115158252519081900360200190f35b34801561047f57600080fd5b506101bc61116b565b34801561049457600080fd5b506101a5600480360360208110156104ab57600080fd5b5035611187565b3480156104be57600080fd5b506101a5600480360360208110156104d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b3480156104fe57600080fd5b506101fa6004803603602081101561051557600080fd5b50356112c9565b34801561052857600080fd5b506101a56004803603602081101561053f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e7565b34801561056857600080fd5b506101bc6004803603604081101561057f57600080fd5b5080359060200135611488565b6009805460018082018355600083905260064306017f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9091018190559054600510156105dc576105dc60006114ca565b60078190556105ea81610c80565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d60208110156106ae57600080fd5b5051905090565b600b6020526000908152604090205481565b3360009081526001602052604090205460ff16806107015750336106e96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61070a57600080fd5b60045473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361073161060f565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516107b957600080fd5b565b600881815481106107c857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6107f7611559565b73ffffffffffffffffffffffffffffffffffffffff166108156110ec565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156108ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075481565b600354811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117f7602a913960400191505060405180910390fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152339381019390935251839273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b50511015610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806117ce6029913960400191505060405180910390fd5b60048054600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015260448401859052519116916323b872dd9160648083019260209291908290030181600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b7a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b6008805460018082019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556040805160608101825283815260208082018781528284018981526000878152600c845285812094518554881673ffffffffffffffffffffffffffffffffffffffff90911617855591518489015551600293840155888152600a825283812080548089018255908252828220018054909516909517909355868452600b90925290912080548401905560068054909201918290555411610c7657610c7661058c565b5050565b60025481565b6000818152600a6020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cc2575b50505050509050600081511115610ea95760005b8151811015610ea757610d1261165a565b600c6000848481518110610d2257fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081208351606081018552815490951685526001810154928501839052600201549284019290925291925090610d9b90606690610d959061025861155d565b906115d9565b600480548451604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094526024840185905251939450169163a9059cbb916044808201926020929091908290030181600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b505050506040513d6020811015610e4657600080fd5b5051610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117ac6022913960400191505060405180910390fd5b5050600101610d01565b505b60005b600354811015610f3557600c600060088381548110610ec757fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810183905560029091019190915501610eac565b506040805160008152602081019182905251610f5391600891611691565b5060066000905560005b6006811015610f9857600181016000908152600a60205260408120610f819161171b565b6001016000818152600b6020526040812055610f5d565b505050565b610fa5611559565b73ffffffffffffffffffffffffffffffffffffffff16610fc36110ec565b73ffffffffffffffffffffffffffffffffffffffff161461104557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600c6020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b3360009081526001602052604090205460ff16806111485750336111306110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61115157600080fd5b600355565b60016020526000908152604090205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806111c15750336111a96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b6111ca57600080fd5b600255565b6111d7611559565b73ffffffffffffffffffffffffffffffffffffffff166111f56110ec565b73ffffffffffffffffffffffffffffffffffffffff161461127757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600981815481106112d657fe5b600091825260209091200154905081565b6112ef611559565b73ffffffffffffffffffffffffffffffffffffffff1661130d6110ec565b73ffffffffffffffffffffffffffffffffffffffff161461138f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117866026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a60205281600052604060002081815481106114a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b805b6009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811015611534576009816001018154811061150857fe5b90600052602060002001546009828154811061152057fe5b6000918252602090912001556001016114cc565b50600980548061154057fe5b6001900381819060005260206000200160009055905550565b3390565b60008261156c575060006115d3565b8282028284828161157957fe5b04146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118216021913960400191505060405180910390fd5b90505b92915050565b600080821161164957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165257fe5b049392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b82805482825590600052602060002090810192821561170b579160200282015b8281111561170b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906116b1565b50611717929150611739565b5090565b50805460008255906000526020600020908101906105ea9190611770565b5b808211156117175780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010161173a565b5b80821115611717576000815560010161177156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ef27c6785b72be218eb0ae78aee75dceb896bdffd4d65eb0e7e8b987a478a64364736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506040516119663803806119668339818101604052606081101561003357600080fd5b5080516020820151604090920151909190600061004e6100dc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b039485166001600160a01b0319918216179091556005805493909416921691909117909155600255674563918244f400006003556100e0565b3390565b611877806100ef6000396000f3fe60806040526004361061018b5760003560e01c8063715018a6116100d6578063b9435c9d1161007f578063e957b88f11610059578063e957b88f146104f2578063f2fde38b1461051c578063f64452ba1461055c5761018b565b8063b9435c9d14610473578063bcb8aaf314610488578063cf1c316a146104b25761018b565b80639b87dd91116100b05780639b87dd91146103e0578063b784c13e146103f5578063b91816111461041f5761018b565b8063715018a61461034157806387d68367146103565780638da5cb5b146103cb5761018b565b806341587823116101385780634afe62b5116101125780634afe62b5146102df5780635d5391d5146103025780636ca3fc3b146103175761018b565b80634158782314610260578063485d7d941461028a57806349c64f46146102ca5761018b565b806330e4f9aa1161016957806330e4f9aa1461020c578063356476f0146102215780633ccfd60b1461024b5761018b565b80630a50e36114610190578063144f2f94146101a75780632ca8c6d3146101e5575b600080fd5b34801561019c57600080fd5b506101a561058c565b005b3480156101b357600080fd5b506101bc6105ed565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101f157600080fd5b506101fa610609565b60408051918252519081900360200190f35b34801561021857600080fd5b506101fa61060f565b34801561022d57600080fd5b506101fa6004803603602081101561024457600080fd5b50356106b5565b34801561025757600080fd5b506101a56106c7565b34801561026c57600080fd5b506101bc6004803603602081101561028357600080fd5b50356107bb565b34801561029657600080fd5b506101a5600480360360208110156102ad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b3480156102d657600080fd5b506101fa610906565b6101a5600480360360408110156102f557600080fd5b508035906020013561090c565b34801561030e57600080fd5b506101fa610c7a565b34801561032357600080fd5b506101a56004803603602081101561033a57600080fd5b5035610c80565b34801561034d57600080fd5b506101a5610f9d565b34801561036257600080fd5b506103966004803603602081101561037957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b4565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b3480156103d757600080fd5b506101bc6110ec565b3480156103ec57600080fd5b506101fa611108565b34801561040157600080fd5b506101a56004803603602081101561041857600080fd5b503561110e565b34801561042b57600080fd5b5061045f6004803603602081101561044257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611156565b604080519115158252519081900360200190f35b34801561047f57600080fd5b506101bc61116b565b34801561049457600080fd5b506101a5600480360360208110156104ab57600080fd5b5035611187565b3480156104be57600080fd5b506101a5600480360360208110156104d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b3480156104fe57600080fd5b506101fa6004803603602081101561051557600080fd5b50356112c9565b34801561052857600080fd5b506101a56004803603602081101561053f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e7565b34801561056857600080fd5b506101bc6004803603604081101561057f57600080fd5b5080359060200135611488565b6009805460018082018355600083905260064306017f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9091018190559054600510156105dc576105dc60006114ca565b60078190556105ea81610c80565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d60208110156106ae57600080fd5b5051905090565b600b6020526000908152604090205481565b3360009081526001602052604090205460ff16806107015750336106e96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61070a57600080fd5b60045473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361073161060f565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516107b957600080fd5b565b600881815481106107c857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6107f7611559565b73ffffffffffffffffffffffffffffffffffffffff166108156110ec565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156108ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075481565b600354811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117f7602a913960400191505060405180910390fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152339381019390935251839273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b50511015610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806117ce6029913960400191505060405180910390fd5b60048054600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015260448401859052519116916323b872dd9160648083019260209291908290030181600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b7a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b6008805460018082019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556040805160608101825283815260208082018781528284018981526000878152600c845285812094518554881673ffffffffffffffffffffffffffffffffffffffff90911617855591518489015551600293840155888152600a825283812080548089018255908252828220018054909516909517909355868452600b90925290912080548401905560068054909201918290555411610c7657610c7661058c565b5050565b60025481565b6000818152600a6020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cc2575b50505050509050600081511115610ea95760005b8151811015610ea757610d1261165a565b600c6000848481518110610d2257fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081208351606081018552815490951685526001810154928501839052600201549284019290925291925090610d9b90606690610d959061025861155d565b906115d9565b600480548451604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094526024840185905251939450169163a9059cbb916044808201926020929091908290030181600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b505050506040513d6020811015610e4657600080fd5b5051610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117ac6022913960400191505060405180910390fd5b5050600101610d01565b505b60005b600354811015610f3557600c600060088381548110610ec757fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810183905560029091019190915501610eac565b506040805160008152602081019182905251610f5391600891611691565b5060066000905560005b6006811015610f9857600181016000908152600a60205260408120610f819161171b565b6001016000818152600b6020526040812055610f5d565b505050565b610fa5611559565b73ffffffffffffffffffffffffffffffffffffffff16610fc36110ec565b73ffffffffffffffffffffffffffffffffffffffff161461104557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600c6020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b3360009081526001602052604090205460ff16806111485750336111306110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61115157600080fd5b600355565b60016020526000908152604090205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806111c15750336111a96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b6111ca57600080fd5b600255565b6111d7611559565b73ffffffffffffffffffffffffffffffffffffffff166111f56110ec565b73ffffffffffffffffffffffffffffffffffffffff161461127757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600981815481106112d657fe5b600091825260209091200154905081565b6112ef611559565b73ffffffffffffffffffffffffffffffffffffffff1661130d6110ec565b73ffffffffffffffffffffffffffffffffffffffff161461138f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117866026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a60205281600052604060002081815481106114a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b805b6009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811015611534576009816001018154811061150857fe5b90600052602060002001546009828154811061152057fe5b6000918252602090912001556001016114cc565b50600980548061154057fe5b6001900381819060005260206000200160009055905550565b3390565b60008261156c575060006115d3565b8282028284828161157957fe5b04146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118216021913960400191505060405180910390fd5b90505b92915050565b600080821161164957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165257fe5b049392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b82805482825590600052602060002090810192821561170b579160200282015b8281111561170b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906116b1565b50611717929150611739565b5090565b50805460008255906000526020600020908101906105ea9190611770565b5b808211156117175780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010161173a565b5b80821115611717576000815560010161177156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ef27c6785b72be218eb0ae78aee75dceb896bdffd4d65eb0e7e8b987a478a64364736f6c634300060c0033",
      "bin-runtime": "60806040526004361061018b5760003560e01c8063715018a6116100d6578063b9435c9d1161007f578063e957b88f11610059578063e957b88f146104f2578063f2fde38b1461051c578063f64452ba1461055c5761018b565b8063b9435c9d14610473578063bcb8aaf314610488578063cf1c316a146104b25761018b565b80639b87dd91116100b05780639b87dd91146103e0578063b784c13e146103f5578063b91816111461041f5761018b565b8063715018a61461034157806387d68367146103565780638da5cb5b146103cb5761018b565b806341587823116101385780634afe62b5116101125780634afe62b5146102df5780635d5391d5146103025780636ca3fc3b146103175761018b565b80634158782314610260578063485d7d941461028a57806349c64f46146102ca5761018b565b806330e4f9aa1161016957806330e4f9aa1461020c578063356476f0146102215780633ccfd60b1461024b5761018b565b80630a50e36114610190578063144f2f94146101a75780632ca8c6d3146101e5575b600080fd5b34801561019c57600080fd5b506101a561058c565b005b3480156101b357600080fd5b506101bc6105ed565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101f157600080fd5b506101fa610609565b60408051918252519081900360200190f35b34801561021857600080fd5b506101fa61060f565b34801561022d57600080fd5b506101fa6004803603602081101561024457600080fd5b50356106b5565b34801561025757600080fd5b506101a56106c7565b34801561026c57600080fd5b506101bc6004803603602081101561028357600080fd5b50356107bb565b34801561029657600080fd5b506101a5600480360360208110156102ad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b3480156102d657600080fd5b506101fa610906565b6101a5600480360360408110156102f557600080fd5b508035906020013561090c565b34801561030e57600080fd5b506101fa610c7a565b34801561032357600080fd5b506101a56004803603602081101561033a57600080fd5b5035610c80565b34801561034d57600080fd5b506101a5610f9d565b34801561036257600080fd5b506103966004803603602081101561037957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b4565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b3480156103d757600080fd5b506101bc6110ec565b3480156103ec57600080fd5b506101fa611108565b34801561040157600080fd5b506101a56004803603602081101561041857600080fd5b503561110e565b34801561042b57600080fd5b5061045f6004803603602081101561044257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611156565b604080519115158252519081900360200190f35b34801561047f57600080fd5b506101bc61116b565b34801561049457600080fd5b506101a5600480360360208110156104ab57600080fd5b5035611187565b3480156104be57600080fd5b506101a5600480360360208110156104d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b3480156104fe57600080fd5b506101fa6004803603602081101561051557600080fd5b50356112c9565b34801561052857600080fd5b506101a56004803603602081101561053f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e7565b34801561056857600080fd5b506101bc6004803603604081101561057f57600080fd5b5080359060200135611488565b6009805460018082018355600083905260064306017f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9091018190559054600510156105dc576105dc60006114ca565b60078190556105ea81610c80565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d60208110156106ae57600080fd5b5051905090565b600b6020526000908152604090205481565b3360009081526001602052604090205460ff16806107015750336106e96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61070a57600080fd5b60045473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361073161060f565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516107b957600080fd5b565b600881815481106107c857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6107f7611559565b73ffffffffffffffffffffffffffffffffffffffff166108156110ec565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156108ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075481565b600354811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117f7602a913960400191505060405180910390fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152339381019390935251839273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b50511015610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806117ce6029913960400191505060405180910390fd5b60048054600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015260448401859052519116916323b872dd9160648083019260209291908290030181600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b7a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f706c6163654265743a207472616e73666572206661696c656400000000000000604482015290519081900360640190fd5b6008805460018082019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556040805160608101825283815260208082018781528284018981526000878152600c845285812094518554881673ffffffffffffffffffffffffffffffffffffffff90911617855591518489015551600293840155888152600a825283812080548089018255908252828220018054909516909517909355868452600b90925290912080548401905560068054909201918290555411610c7657610c7661058c565b5050565b60025481565b6000818152600a6020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cc2575b50505050509050600081511115610ea95760005b8151811015610ea757610d1261165a565b600c6000848481518110610d2257fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081208351606081018552815490951685526001810154928501839052600201549284019290925291925090610d9b90606690610d959061025861155d565b906115d9565b600480548451604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094526024840185905251939450169163a9059cbb916044808201926020929091908290030181600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b505050506040513d6020811015610e4657600080fd5b5051610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117ac6022913960400191505060405180910390fd5b5050600101610d01565b505b60005b600354811015610f3557600c600060088381548110610ec757fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810183905560029091019190915501610eac565b506040805160008152602081019182905251610f5391600891611691565b5060066000905560005b6006811015610f9857600181016000908152600a60205260408120610f819161171b565b6001016000818152600b6020526040812055610f5d565b505050565b610fa5611559565b73ffffffffffffffffffffffffffffffffffffffff16610fc36110ec565b73ffffffffffffffffffffffffffffffffffffffff161461104557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600c6020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60035481565b3360009081526001602052604090205460ff16806111485750336111306110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61115157600080fd5b600355565b60016020526000908152604090205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806111c15750336111a96110ec565b73ffffffffffffffffffffffffffffffffffffffff16145b6111ca57600080fd5b600255565b6111d7611559565b73ffffffffffffffffffffffffffffffffffffffff166111f56110ec565b73ffffffffffffffffffffffffffffffffffffffff161461127757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600981815481106112d657fe5b600091825260209091200154905081565b6112ef611559565b73ffffffffffffffffffffffffffffffffffffffff1661130d6110ec565b73ffffffffffffffffffffffffffffffffffffffff161461138f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117866026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a60205281600052604060002081815481106114a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b805b6009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811015611534576009816001018154811061150857fe5b90600052602060002001546009828154811061152057fe5b6000918252602090912001556001016114cc565b50600980548061154057fe5b6001900381819060005260206000200160009055905550565b3390565b60008261156c575060006115d3565b8282028284828161157957fe5b04146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118216021913960400191505060405180910390fd5b90505b92915050565b600080821161164957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165257fe5b049392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b82805482825590600052602060002090810192821561170b579160200282015b8281111561170b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906116b1565b50611717929150611739565b5090565b50805460008255906000526020600020908101906105ea9190611770565b5b808211156117175780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010161173a565b5b80821115611717576000815560010161177156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ef27c6785b72be218eb0ae78aee75dceb896bdffd4d65eb0e7e8b987a478a64364736f6c634300060c0033",
      "srcmap": "254:3728:11:-:0;;;967:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;967:266:11;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;1095:9:11;:20;;-1:-1:-1;;;;;1095:20:11;;;-1:-1:-1;;;;;;1095:20:11;;;;;;;1129:5;:12;;;;;;;;;;;;;;;1155:11;:21;1203:19;-1:-1:-1;1190:32:11;254:3728;;598:104:6;685:10;598:104;:::o;254:3728:11:-;;;;;;;",
      "srcmap-runtime": "254:3728:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:313;;;;;;;;;;;;;:::i;:::-;;562:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;593:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3533:119;;;;;;;;;;;;;:::i;867:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;867:42:11;;:::i;3854:121::-;;;;;;;;;;;;;:::i;669:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;669:25:11;;:::i;420:150:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;630:28:11:-;;;;;;;;;;;;;:::i;1243:833::-;;;;;;;;;;;;;;;;-1:-1:-1;1243:833:11;;;;;;;:::i;455:26::-;;;;;;;;;;;;;:::i;2631:896::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2631:896:11;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;920:36:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:36:11;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:85:0;;;;;;;;;;;;;:::i;491:25:11:-;;;;;;;;;;;;;:::i;3756:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3756:91:11;;:::i;151:42:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;527:24:11;;;;;;;;;;;;;:::i;3657:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3657:92:11;;:::i;316:98:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;706:24:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:24:11;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;776:45:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:45:11;;;;;;;:::i;2305:313::-;2420:7;:29;;2405:1;2420:29;;;;;2358:23;2420:29;;;2400:1;2385:12;:16;2384:22;2420:29;;;;;;;2481:14;;2498:1;-1:-1:-1;2478:37:11;;;2501:14;2513:1;2501:11;:14::i;:::-;2529:13;:31;;;2574:33;2545:15;2574:16;:33::i;:::-;2305:313;:::o;562:20::-;;;;;;:::o;593:27::-;;;;:::o;3533:119::-;3610:9;;;3603:42;;;;;;3639:4;3603:42;;;;;;;;3581:7;;3610:9;;;;;3603:27;;:42;;;;;;;;;;;;;;3610:9;3603:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3603:42:11;;-1:-1:-1;3533:119:11;:::o;867:42::-;;;;;;;;;;;;;:::o;3854:121::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3917:9:11::1;::::0;::::1;;3910:26;3937:10;3949:17;:15;:17::i;:::-;3910:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;3910:57:11;3902:66:::1;;;::::0;::::1;;3854:121::o:0;669:25::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;669:25:11;:::o;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;630:28:11:-;;;;:::o;1243:833::-;1337:10;;1327:6;:20;;1319:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:9;;;1417:39;;;;;;1445:10;1417:39;;;;;;;;1460:6;;1424:9;;;;;1417:27;;:39;;;;;;;;;;;;;;1424:9;1417:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1417:39:11;:49;;1409:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:9;;;1586:5;;1535:66;;;;;;1566:10;1535:66;;;;;;;1542:9;1586:5;;;1535:66;;;;;;;;;;;1542:9;;;1535:30;;:66;;;;;;;;;;;;;;1542:9;;1535:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1535:66:11;1527:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1687:8;:25;;;;;;;;;;;;;1701:10;1687:25;;;;;;;;;1777:31;;;;;;;;;;;1687:25;1777:31;;;;;;;;;;;;-1:-1:-1;1757:17:11;;;:5;:17;;;;;:51;;;;;;1687:25;1757:51;;;;;;;;;;;;;;;;;;1860:16;;;:8;:16;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;1939:15;;;:7;:15;;;;;;:25;;;;;;1979:12;:14;;;;;;;;;2030:11;-1:-1:-1;2010:55:11;;2043:22;:20;:22::i;:::-;1243:833;;:::o;455:26::-;;;;:::o;2631:896::-;2730:25;;;;:8;:25;;;;;;;;;2703:52;;;;;;;;;;;;;;;;;:24;;:52;;;2730:25;2703:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:1;2774:7;:14;:18;2770:364;;;2817:9;2812:308;2836:7;:14;2832:1;:18;2812:308;;;2879:17;;:::i;:::-;2899:5;:17;2905:7;2913:1;2905:10;;;;;;;;;;;;;;;;;;;2899:17;;;;;;;;;;;;;;;;;-1:-1:-1;2899:17:11;;;2879:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2954:31:11;;2981:3;;2954:22;;2972:3;2954:17;:22::i;:::-;:26;;:31::i;:::-;3022:9;;;3042:12;;3015:47;;;;;;3022:9;3015:47;;;;;;;;;;;;;;;;;2938;;-1:-1:-1;3022:9:11;;3015:26;;:47;;;;;;;;;;;;;;;3022:9;;3015:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3015:47:11;3007:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2852:3:11;;2812:308;;;;2770:364;3158:9;3153:103;3177:10;;3173:1;:14;3153:103;;;3223:5;:18;3229:8;3238:1;3229:11;;;;;;;;;;;;;;;;;;;;;;3223:18;;;;;;;;;;;;3216:25;;;;;;3229:11;3216:25;;;;;;;;;;;;;;3189:3;3153:103;;;-1:-1:-1;3281:16:11;;;3295:1;3281:16;;;;;;;;;3270:27;;;:8;;:27;:::i;:::-;;3318:12;3311:19;;;3350:9;3345:172;3369:1;3365;:5;3345:172;;;3415:1;3411:5;;3402:15;;;;:8;:15;;;;;3395:22;;;:::i;:::-;3454:1;3450:5;3442:14;;;;:7;:14;;;;;3435:21;3345:172;;;;2631:896;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;920:36:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1085:85:0:-;1131:7;1157:6;;;1085:85;:::o;491:25:11:-;;;;:::o;3756:91::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3821:10:11::1;:19:::0;3756:91::o;151:42:9:-;;;;;;;;;;;;;;;:::o;527:24:11:-;;;;;;:::o;3657:92::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3722:11:11::1;:20:::0;3657:92::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;706:24:11:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:24:11;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;776:45:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:45:11;;-1:-1:-1;776:45:11:o;2094:201::-;2164:5;2151:107;2175:7;:14;:18;;2171:22;;2151:107;;;2230:7;2238:1;2241;2238:4;2230:13;;;;;;;;;;;;;;;;2217:7;2225:1;2217:10;;;;;;;;;;;;;;;;;:26;2195:3;;2151:107;;;;2271:7;:13;;;;;;;;;;;;;;;;;;;;;;;;2094:201;:::o;598:104:6:-;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/GovernanceToken.sol:GovernanceToken": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "cap_",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_manualMintLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_lockFromBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_lockToBlock",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "fromDelegate",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "toDelegate",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "previousBalance",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newBalance",
              "type": "uint256"
            }
          ],
          "name": "DelegateVotesChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Lock",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DELEGATION_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "DOMAIN_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "canUnlockAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newCap",
              "type": "uint256"
            }
          ],
          "name": "capUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "name": "checkpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "fromBlock",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "votes",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "circulatingSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            }
          ],
          "name": "delegate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "delegateBySig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            }
          ],
          "name": "delegates",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getCurrentVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lastUnlockBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "lock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockFromBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockFrom",
              "type": "uint256"
            }
          ],
          "name": "lockFromUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lockOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockToBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockTo",
              "type": "uint256"
            }
          ],
          "name": "lockToUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "manualMint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "manualMintLimit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "manualMinted",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "numCheckpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "totalBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalLock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            }
          ],
          "name": "transferAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040526000600c553480156200001657600080fd5b506040516200372138038062003721833981810160405260c08110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82516401000000008111828201881017156200008e57600080fd5b82525081516020918201929091019080838360005b83811015620000bd578181015183820152602001620000a3565b50505050905090810190601f168015620000eb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b50604090815260208281015191830151606084015160809094015188519396509094509187918791620001d791600391908501906200027e565b508051620001ed9060049060208401906200027e565b50506005805460ff19166012179055506000620002096200027a565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600793909355600b91909155600955600a55506200031a9050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c157805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f1578251825591602001919060010190620002d4565b50620002ff92915062000303565b5090565b5b80821115620002ff576000815560010162000304565b6133f7806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661221a565b610416612220565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612244565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612271565b61041661241d565b610416612423565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb8612439565b848461243d565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612584565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612584565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125fb565b9061266e565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126ef565b610dcc84610d4e612439565b610dc7856040518060600160405280602881526020016132fb6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d99612439565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061273e565b61243d565b5060019392505050565b610dde612439565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127ef565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad612439565b84610dc785600160006110be612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127ef565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b611151612439565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612994565b5050565b611239612439565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127ef565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b75565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b611430612439565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806131386032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613120565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126ef565b6000610bbf611a39612439565b84610dc78560405180606001604052806025815260200161339d6025913960016000611a63612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061273e565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126ef565b336000908152600d6020526040902054611b6a9082612584565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612584565b60085550565b6000610bbf611ba8612439565b84846126ef565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c3c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133236031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061316a602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806132a96031913960400191505060405180910390fd5b611fda818b612b75565b505050505b505050505050565b60006118796110fb565b611ff9612439565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c5461217390836127ef565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806132676042913960600191505060405180910390fd5b6121d48282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f6020526040812054612206921683612994565b600c5461221390826127ef565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b612279612439565b73ffffffffffffffffffffffffffffffffffffffff16612297611848565b73ffffffffffffffffffffffffffffffffffffffff161461231957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612433610c11565b90612584565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133796024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261260a57506000610bc3565b8282028284828161261757fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132da6021913960400191505060405180910390fd5b60008082116126de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126e757fe5b049392505050565b6126fa838383612c40565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461273992918216911683612994565b505050565b600081848411156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ac578181015183820152602001612794565b50505050905090810190601f1680156127d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128f160008383612e10565b6002546128fe90826127ef565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461293190826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d05750600081115b156127395773ffffffffffffffffffffffffffffffffffffffff831615612aa75773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a2a576000612a87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a958285612584565b9050612aa386848484612eb8565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156127395773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612afc576000612b59565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b6782856127ef565b9050611fdf85848484612eb8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612ba984611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c36828483612994565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612cac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133546025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131976023913960400191505060405180910390fd5b612d23838383612e10565b612d6d816040518060600160405280602681526020016132416026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919061273e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612da990826127ef565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1b838383612739565b73ffffffffffffffffffffffffffffffffffffffff831661273957600754612e4b82612e45610c11565b906127ef565b111561273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612edc436040518060600160405280603f81526020016131ba603f91396130a8565b905060008463ffffffff16118015612f50575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fb85773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613051565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410613118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127ac578181015183820152602001612794565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220311fa7e9e1cc35e3a52d98df2d5c9358c4efc201a616efa312417acff438c96764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3721 CODESIZE SUB DUP1 PUSH3 0x3721 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xC0 DUP2 LT ISZERO PUSH3 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xEB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x155 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x19D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD DUP9 MLOAD SWAP4 SWAP7 POP SWAP1 SWAP5 POP SWAP2 DUP8 SWAP2 DUP8 SWAP2 PUSH3 0x1D7 SWAP2 PUSH1 0x3 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x27E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1ED SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x27E JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH1 0x0 PUSH3 0x209 PUSH3 0x27A JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x7 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xB SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE POP PUSH3 0x31A SWAP1 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2C1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2F1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2F1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2F1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2D4 JUMP JUMPDEST POP PUSH3 0x2FF SWAP3 SWAP2 POP PUSH3 0x303 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2FF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x304 JUMP JUMPDEST PUSH2 0x33F7 DUP1 PUSH3 0x32A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x320 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC38533C6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xE6B2FB4A GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0xF85B84A4 EQ PUSH2 0xAE7 JUMPI DUP1 PUSH4 0xFD3D27B8 EQ PUSH2 0xAEF JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xE6B2FB4A EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xA4D JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0xA55 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xCF1C316A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x99E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9D1 JUMPI DUP1 PUSH4 0xE4C5FF46 EQ PUSH2 0xA0C JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xC38533C6 EQ PUSH2 0x925 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x942 JUMPI DUP1 PUSH4 0xCA5C7B91 EQ PUSH2 0x996 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xA3A7E7F3 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x8F2 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xA3A7E7F3 EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0xA69DF4B5 EQ PUSH2 0x87E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x8E875E1A GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x8E875E1A EQ PUSH2 0x7FA JUMPI DUP1 PUSH4 0x9358928B EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x80A JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x78C JUMPI DUP1 PUSH4 0x89A2867C EQ PUSH2 0x7BF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7F2 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x40346C49 GT PUSH2 0x26B JUMPI DUP1 PUSH4 0x5C19A95C GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x718 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x753 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0x66FC237B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x6CC JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x4B0EE02A GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x4B0EE02A EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0x5A46D3B5 EQ PUSH2 0x65E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x40346C49 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x59C JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x2CD JUMPI DUP1 PUSH4 0x355274EA GT PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x355274EA EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x3A1AAE35 EQ PUSH2 0x53E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x282D3FDF EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4DF JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x202B1760 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x45B JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0xCB285E2 EQ PUSH2 0x3EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x367 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x394 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x416 PUSH2 0xC11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC17 JUMP JUMPDEST PUSH2 0x416 PUSH2 0xD11 JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD35 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x4E7 PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH2 0x109A JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10A0 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1149 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1231 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x635 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13AD JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13D5 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x13E2 JUMP JUMPDEST PUSH2 0x6FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x40C PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1544 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x180E JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x635 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x1869 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x186F JUMP JUMPDEST PUSH2 0x32D PUSH2 0x187E JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18FD JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A2C JUMP JUMPDEST PUSH2 0x40C PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B9B JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BAF JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C4B JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C60 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1CA8 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x1FE7 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FF1 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x20E8 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2120 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x221A JUMP JUMPDEST PUSH2 0x416 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0xA94 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x2244 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x241D JUMP JUMPDEST PUSH2 0x416 PUSH2 0x2423 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xBA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB76 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBA1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB84 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0xBB8 PUSH2 0x2439 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x243D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0xC03 JUMPI POP CALLER PUSH2 0xBEB PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD NUMBER LT ISZERO PUSH2 0xC2B JUMPI POP PUSH1 0x0 PUSH2 0xD0C JUMP JUMPDEST PUSH1 0xA SLOAD NUMBER LT PUSH2 0xC60 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xC91 SWAP1 NUMBER SWAP1 PUSH2 0x2584 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCC8 SWAP2 PUSH2 0x2584 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xD07 SWAP1 DUP3 SWAP1 PUSH2 0xD01 SWAP1 DUP6 PUSH2 0x25FB JUMP JUMPDEST SWAP1 PUSH2 0x266E JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD42 DUP5 DUP5 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH2 0xDCC DUP5 PUSH2 0xD4E PUSH2 0x2439 JUMP JUMPDEST PUSH2 0xDC7 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x32FB PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xD99 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST PUSH2 0x243D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xDDE PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDFC PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xF00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206C6F636B20746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF09 DUP3 PUSH2 0x1400 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206C6F636B20616D6F756E74206F7665722062616C616E636500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF82 DUP3 ADDRESS DUP4 PUSH2 0x26EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFB2 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x8 SLOAD PUSH2 0xFE5 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH32 0x625FED9875DADA8643F2418B838AE0BC78D9A148A18EEE4EE1979FF0F3F5D427 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x10AD PUSH2 0x2439 JUMP JUMPDEST DUP5 PUSH2 0xDC7 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x10BE PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x113B JUMPI POP CALLER PUSH2 0x1123 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH2 0x1151 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x116F PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x11F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11FB DUP3 DUP3 PUSH2 0x2863 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x122D SWAP3 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1239 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1257 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x12D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC3 PUSH2 0x1356 DUP4 PUSH2 0x1400 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x13DF CALLER DUP3 PUSH2 0x2B75 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1430 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x144E PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x159E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3138 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x15D9 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBC3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x169E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0xBC3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x16E6 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBC3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x17CA JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1736 PUSH2 0x3120 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP7 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE DUP1 SLOAD SWAP1 SWAP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x17A5 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xBC3 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x17BC JUMPI DUP2 SWAP4 POP PUSH2 0x17C3 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x170C JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0xC11 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xBA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB76 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBA1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x1933 SWAP2 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x9 SLOAD PUSH1 0xE SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x199B JUMPI PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD LT ISZERO PUSH2 0x19FC JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0xE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x13DF SWAP1 DUP3 PUSH2 0x1A27 DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x1A39 PUSH2 0x2439 JUMP JUMPDEST DUP5 PUSH2 0xDC7 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x339D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x1A63 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1B1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2063616E6E6F7420756E6C6F636B000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1B27 CALLER PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B32 ADDRESS PUSH2 0x1400 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1B45 JUMPI PUSH2 0x1B42 ADDRESS PUSH2 0x1400 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1B50 ADDRESS CALLER DUP4 PUSH2 0x26EF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1B6A SWAP1 DUP3 PUSH2 0x2584 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xE SWAP1 MSTORE KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH2 0x1B95 SWAP1 DUP3 PUSH2 0x2584 JUMP JUMPDEST PUSH1 0x8 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x1BA8 PUSH2 0x2439 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1BE7 JUMPI PUSH1 0x0 PUSH2 0x1C44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1C9A JUMPI POP CALLER PUSH2 0x1C82 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1CA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 PUSH2 0x1CD3 PUSH2 0xAF7 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x1CE2 PUSH2 0x2C3C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF PUSH1 0xC0 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP11 SWAP1 MSTORE PUSH2 0x120 DUP1 DUP5 ADD DUP11 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x140 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x160 DUP6 ADD MSTORE PUSH2 0x162 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0x182 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x1A2 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP8 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x1C2 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP12 AND PUSH2 0x1E2 DUP8 ADD MSTORE PUSH2 0x202 DUP7 ADD DUP11 SWAP1 MSTORE PUSH2 0x222 DUP7 ADD DUP10 SWAP1 MSTORE SWAP4 MLOAD SWAP3 SWAP7 POP SWAP1 SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x242 DUP1 DUP5 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3323 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x1F77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x316A PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1FD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32A9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FDA DUP2 DUP12 PUSH2 0x2B75 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x1FF9 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2017 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2099 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x215A JUMPI POP CALLER PUSH2 0x2142 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH1 0xC SLOAD PUSH2 0x2173 SWAP1 DUP4 PUSH2 0x27EF JUMP JUMPDEST GT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3267 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21D4 DUP3 DUP3 PUSH2 0x2863 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2206 SWAP3 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x2213 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0xC SSTORE POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2297 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2319 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2385 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31F9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH1 0x8 SLOAD PUSH2 0x2433 PUSH2 0xC11 JUMP JUMPDEST SWAP1 PUSH2 0x2584 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x24A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3379 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2515 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x321F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x25F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x260A JUMPI POP PUSH1 0x0 PUSH2 0xBC3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2617 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32DA PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x26DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x26E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x26FA DUP4 DUP4 DUP4 PUSH2 0x2C40 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x2739 SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x27E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2794 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x27D9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x28E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x28F1 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2E10 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x28FE SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2931 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x29D0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0x2739 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x2AA7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x2A2A JUMPI PUSH1 0x0 PUSH2 0x2A87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A95 DUP3 DUP6 PUSH2 0x2584 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AA3 DUP7 DUP5 DUP5 DUP5 PUSH2 0x2EB8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x2739 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x2AFC JUMPI PUSH1 0x0 PUSH2 0x2B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B67 DUP3 DUP6 PUSH2 0x27EF JUMP JUMPDEST SWAP1 POP PUSH2 0x1FDF DUP6 DUP5 DUP5 DUP5 PUSH2 0x2EB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2BA9 DUP5 PUSH2 0x1400 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP10 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP4 SWAP3 DUP7 AND SWAP3 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x2C36 DUP3 DUP5 DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2CAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3354 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3197 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D23 DUP4 DUP4 DUP4 PUSH2 0x2E10 JUMP JUMPDEST PUSH2 0x2D6D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3241 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2DA9 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2E1B DUP4 DUP4 DUP4 PUSH2 0x2739 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2739 JUMPI PUSH1 0x7 SLOAD PUSH2 0x2E4B DUP3 PUSH2 0x2E45 PUSH2 0xC11 JUMP JUMPDEST SWAP1 PUSH2 0x27EF JUMP JUMPDEST GT ISZERO PUSH2 0x2739 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332304361707065643A2063617020657863656564656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2EDC NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x31BA PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x30A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x2F50 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x2FB8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD DUP3 SWAP1 SSTORE PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 DUP5 MSTORE DUP7 DUP2 KECCAK256 DUP12 DUP7 AND DUP3 MSTORE DUP5 MSTORE DUP7 DUP2 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP2 DUP3 AND OR DUP8 SSTORE SWAP3 MLOAD PUSH1 0x1 SWAP7 DUP8 ADD SSTORE SWAP1 DUP2 MSTORE PUSH1 0x11 SWAP1 SWAP3 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 DUP9 ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x3118 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x27AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2794 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID SELFBALANCE PUSH16 0x7665726E616E6365546F6B656E3A3A67 PUSH6 0x745072696F72 JUMP PUSH16 0x7465733A206E6F742079657420646574 PUSH6 0x726D696E6564 SELFBALANCE PUSH16 0x7665726E616E6365546F6B656E3A3A64 PUSH6 0x6C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964206E6F6E636545524332303A2074 PUSH19 0x616E7366657220746F20746865207A65726F20 PUSH2 0x6464 PUSH19 0x657373476F7665726E616E6365546F6B656E3A GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH20 0x756D206F66206D616E75616C4D696E7465642061 PUSH15 0x6420616D6F756E7420677265617465 PUSH19 0x207468616E206D616E75616C4D696E744C696D PUSH10 0x74476F7665726E616E63 PUSH6 0x546F6B656E3A GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A207369676E617475726520657870 PUSH10 0x726564536166654D6174 PUSH9 0x3A206D756C7469706C PUSH10 0x636174696F6E206F7665 PUSH19 0x666C6F7745524332303A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E6365476F PUSH23 0x65726E616E6365546F6B656E3A3A64656C656761746542 PUSH26 0x5369673A20696E76616C6964207369676E617475726545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220311F 0xA7 0xE9 0xE1 0xCC CALLDATALOAD 0xE3 0xA5 0x2D SWAP9 0xDF 0x2D 0x5C SWAP4 PC 0xC4 0xEF 0xC2 ADD 0xA6 AND 0xEF LOG3 SLT COINBASE PUSH27 0xCFF438C96764736F6C634300060C00330000000000000000000000 ",
          "sourceMap": "220:15150:12:-:0;;;473:1;443:31;;640:361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;2032:13:2;;640:361:12;;-1:-1:-1;640:361:12;;-1:-1:-1;640:361:12;837:5;;844:7;;2032:13:2;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;2082:9:2;904:12:0;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;;-1:-1:-1;;;;;926:18:0;;;;;;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;-1:-1:-1;;959:43:0;;-1:-1:-1;;959:43:0;-1:-1:-1;863:4:12::1;:11:::0;;;;884:15:::1;:34:::0;;;;928:13:::1;:30:::0;968:11:::1;:26:::0;-1:-1:-1;220:15150:12;;-1:-1:-1;220:15150:12;598:104:6;685:10;598:104;:::o;220:15150:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;220:15150:12;;;-1:-1:-1;220:15150:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661221a565b610416612220565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612244565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612271565b61041661241d565b610416612423565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb8612439565b848461243d565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612584565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612584565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125fb565b9061266e565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126ef565b610dcc84610d4e612439565b610dc7856040518060600160405280602881526020016132fb6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d99612439565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061273e565b61243d565b5060019392505050565b610dde612439565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127ef565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad612439565b84610dc785600160006110be612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127ef565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b611151612439565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612994565b5050565b611239612439565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127ef565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b75565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b611430612439565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806131386032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613120565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126ef565b6000610bbf611a39612439565b84610dc78560405180606001604052806025815260200161339d6025913960016000611a63612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061273e565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126ef565b336000908152600d6020526040902054611b6a9082612584565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612584565b60085550565b6000610bbf611ba8612439565b84846126ef565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c3c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133236031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061316a602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806132a96031913960400191505060405180910390fd5b611fda818b612b75565b505050505b505050505050565b60006118796110fb565b611ff9612439565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c5461217390836127ef565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806132676042913960600191505060405180910390fd5b6121d48282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f6020526040812054612206921683612994565b600c5461221390826127ef565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b612279612439565b73ffffffffffffffffffffffffffffffffffffffff16612297611848565b73ffffffffffffffffffffffffffffffffffffffff161461231957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612433610c11565b90612584565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133796024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261260a57506000610bc3565b8282028284828161261757fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132da6021913960400191505060405180910390fd5b60008082116126de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126e757fe5b049392505050565b6126fa838383612c40565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461273992918216911683612994565b505050565b600081848411156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ac578181015183820152602001612794565b50505050905090810190601f1680156127d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128f160008383612e10565b6002546128fe90826127ef565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461293190826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d05750600081115b156127395773ffffffffffffffffffffffffffffffffffffffff831615612aa75773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a2a576000612a87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a958285612584565b9050612aa386848484612eb8565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156127395773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612afc576000612b59565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b6782856127ef565b9050611fdf85848484612eb8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612ba984611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c36828483612994565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612cac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133546025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131976023913960400191505060405180910390fd5b612d23838383612e10565b612d6d816040518060600160405280602681526020016132416026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919061273e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612da990826127ef565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1b838383612739565b73ffffffffffffffffffffffffffffffffffffffff831661273957600754612e4b82612e45610c11565b906127ef565b111561273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612edc436040518060600160405280603f81526020016131ba603f91396130a8565b905060008463ffffffff16118015612f50575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fb85773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613051565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410613118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127ac578181015183820152602001612794565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220311fa7e9e1cc35e3a52d98df2d5c9358c4efc201a616efa312417acff438c96764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x320 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC38533C6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xE6B2FB4A GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAB4 JUMPI DUP1 PUSH4 0xF85B84A4 EQ PUSH2 0xAE7 JUMPI DUP1 PUSH4 0xFD3D27B8 EQ PUSH2 0xAEF JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xE6B2FB4A EQ PUSH2 0xA45 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xA4D JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0xA55 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xCF1C316A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x99E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9D1 JUMPI DUP1 PUSH4 0xE4C5FF46 EQ PUSH2 0xA0C JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xC38533C6 EQ PUSH2 0x925 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x942 JUMPI DUP1 PUSH4 0xCA5C7B91 EQ PUSH2 0x996 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xA3A7E7F3 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x8F2 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0xA3A7E7F3 EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0xA69DF4B5 EQ PUSH2 0x87E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x8E875E1A GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x8E875E1A EQ PUSH2 0x7FA JUMPI DUP1 PUSH4 0x9358928B EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x80A JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x78C JUMPI DUP1 PUSH4 0x89A2867C EQ PUSH2 0x7BF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7F2 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x40346C49 GT PUSH2 0x26B JUMPI DUP1 PUSH4 0x5C19A95C GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x718 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x753 JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0x66FC237B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x6CC JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x4B0EE02A GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x4B0EE02A EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0x5A46D3B5 EQ PUSH2 0x65E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x40346C49 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x59C JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x2CD JUMPI DUP1 PUSH4 0x355274EA GT PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x355274EA EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x3A1AAE35 EQ PUSH2 0x53E JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x282D3FDF EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4DF JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x202B1760 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x45B JUMPI PUSH2 0x320 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0xCB285E2 EQ PUSH2 0x3EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x367 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x394 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x416 PUSH2 0xC11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC17 JUMP JUMPDEST PUSH2 0x416 PUSH2 0xD11 JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD35 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x4E7 PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH2 0x109A JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10A0 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1101 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1149 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1231 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x635 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13AD JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13D5 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x13E2 JUMP JUMPDEST PUSH2 0x6FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x40C PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1544 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x180E JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x635 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x1869 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x186F JUMP JUMPDEST PUSH2 0x32D PUSH2 0x187E JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18FD JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A2C JUMP JUMPDEST PUSH2 0x40C PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B9B JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BAF JUMP JUMPDEST PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C4B JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C60 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1CA8 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x1FE7 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FF1 JUMP JUMPDEST PUSH2 0x416 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x20E8 JUMP JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2120 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x221A JUMP JUMPDEST PUSH2 0x416 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0xA94 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x2244 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x416 PUSH2 0x241D JUMP JUMPDEST PUSH2 0x416 PUSH2 0x2423 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xBA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB76 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBA1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB84 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0xBB8 PUSH2 0x2439 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x243D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0xC03 JUMPI POP CALLER PUSH2 0xBEB PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD NUMBER LT ISZERO PUSH2 0xC2B JUMPI POP PUSH1 0x0 PUSH2 0xD0C JUMP JUMPDEST PUSH1 0xA SLOAD NUMBER LT PUSH2 0xC60 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xC91 SWAP1 NUMBER SWAP1 PUSH2 0x2584 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCC8 SWAP2 PUSH2 0x2584 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xD07 SWAP1 DUP3 SWAP1 PUSH2 0xD01 SWAP1 DUP6 PUSH2 0x25FB JUMP JUMPDEST SWAP1 PUSH2 0x266E JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD42 DUP5 DUP5 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH2 0xDCC DUP5 PUSH2 0xD4E PUSH2 0x2439 JUMP JUMPDEST PUSH2 0xDC7 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x32FB PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xD99 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST PUSH2 0x243D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xDDE PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDFC PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xF00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206C6F636B20746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF09 DUP3 PUSH2 0x1400 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206C6F636B20616D6F756E74206F7665722062616C616E636500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF82 DUP3 ADDRESS DUP4 PUSH2 0x26EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFB2 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x8 SLOAD PUSH2 0xFE5 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH32 0x625FED9875DADA8643F2418B838AE0BC78D9A148A18EEE4EE1979FF0F3F5D427 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x10AD PUSH2 0x2439 JUMP JUMPDEST DUP5 PUSH2 0xDC7 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x10BE PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x113B JUMPI POP CALLER PUSH2 0x1123 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH2 0x1151 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x116F PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x11F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11FB DUP3 DUP3 PUSH2 0x2863 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x122D SWAP3 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1239 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1257 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x12D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC3 PUSH2 0x1356 DUP4 PUSH2 0x1400 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x13DF CALLER DUP3 PUSH2 0x2B75 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1430 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x144E PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x159E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3138 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x15D9 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBC3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x169E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0xBC3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x16E6 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBC3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x17CA JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1736 PUSH2 0x3120 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP7 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE DUP1 SLOAD SWAP1 SWAP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x17A5 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xBC3 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x17BC JUMPI DUP2 SWAP4 POP PUSH2 0x17C3 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x170C JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0xC11 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xBA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB76 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBA1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x1933 SWAP2 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x9 SLOAD PUSH1 0xE SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x199B JUMPI PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD LT ISZERO PUSH2 0x19FC JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SSTORE JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0xE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x13DF SWAP1 DUP3 PUSH2 0x1A27 DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x1A39 PUSH2 0x2439 JUMP JUMPDEST DUP5 PUSH2 0xDC7 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x339D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x1A63 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1B1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2063616E6E6F7420756E6C6F636B000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1B27 CALLER PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B32 ADDRESS PUSH2 0x1400 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1B45 JUMPI PUSH2 0x1B42 ADDRESS PUSH2 0x1400 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1B50 ADDRESS CALLER DUP4 PUSH2 0x26EF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1B6A SWAP1 DUP3 PUSH2 0x2584 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xE SWAP1 MSTORE KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH2 0x1B95 SWAP1 DUP3 PUSH2 0x2584 JUMP JUMPDEST PUSH1 0x8 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBF PUSH2 0x1BA8 PUSH2 0x2439 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x26EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1BE7 JUMPI PUSH1 0x0 PUSH2 0x1C44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1C9A JUMPI POP CALLER PUSH2 0x1C82 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1CA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8CAD95687BA82C2CE50E74F7B754645E5117C3A5BEC8151C0726D5857980A866 PUSH2 0x1CD3 PUSH2 0xAF7 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x1CE2 PUSH2 0x2C3C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF PUSH1 0xC0 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP11 SWAP1 MSTORE PUSH2 0x120 DUP1 DUP5 ADD DUP11 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x140 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x160 DUP6 ADD MSTORE PUSH2 0x162 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0x182 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x1A2 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP8 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x1C2 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP12 AND PUSH2 0x1E2 DUP8 ADD MSTORE PUSH2 0x202 DUP7 ADD DUP11 SWAP1 MSTORE PUSH2 0x222 DUP7 ADD DUP10 SWAP1 MSTORE SWAP4 MLOAD SWAP3 SWAP7 POP SWAP1 SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x242 DUP1 DUP5 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3323 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x1F77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x316A PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1FD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32A9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FDA DUP2 DUP12 PUSH2 0x2B75 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x1FF9 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2017 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2099 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x215A JUMPI POP CALLER PUSH2 0x2142 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH1 0xC SLOAD PUSH2 0x2173 SWAP1 DUP4 PUSH2 0x27EF JUMP JUMPDEST GT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3267 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21D4 DUP3 DUP3 PUSH2 0x2863 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2206 SWAP3 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x2213 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0xC SSTORE POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x2439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2297 PUSH2 0x1848 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2319 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2385 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31F9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH1 0x8 SLOAD PUSH2 0x2433 PUSH2 0xC11 JUMP JUMPDEST SWAP1 PUSH2 0x2584 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x24A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3379 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2515 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x321F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x25F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x260A JUMPI POP PUSH1 0x0 PUSH2 0xBC3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2617 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32DA PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x26DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x26E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x26FA DUP4 DUP4 DUP4 PUSH2 0x2C40 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x2739 SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x27E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2794 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x27D9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x28E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x28F1 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2E10 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x28FE SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2931 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x29D0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0x2739 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x2AA7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x2A2A JUMPI PUSH1 0x0 PUSH2 0x2A87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A95 DUP3 DUP6 PUSH2 0x2584 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AA3 DUP7 DUP5 DUP5 DUP5 PUSH2 0x2EB8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x2739 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x2AFC JUMPI PUSH1 0x0 PUSH2 0x2B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B67 DUP3 DUP6 PUSH2 0x27EF JUMP JUMPDEST SWAP1 POP PUSH2 0x1FDF DUP6 DUP5 DUP5 DUP5 PUSH2 0x2EB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2BA9 DUP5 PUSH2 0x1400 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP10 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP4 SWAP3 DUP7 AND SWAP3 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x2C36 DUP3 DUP5 DUP4 PUSH2 0x2994 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2CAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3354 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3197 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D23 DUP4 DUP4 DUP4 PUSH2 0x2E10 JUMP JUMPDEST PUSH2 0x2D6D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3241 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x273E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2DA9 SWAP1 DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2E1B DUP4 DUP4 DUP4 PUSH2 0x2739 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2739 JUMPI PUSH1 0x7 SLOAD PUSH2 0x2E4B DUP3 PUSH2 0x2E45 PUSH2 0xC11 JUMP JUMPDEST SWAP1 PUSH2 0x27EF JUMP JUMPDEST GT ISZERO PUSH2 0x2739 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332304361707065643A2063617020657863656564656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2EDC NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x31BA PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x30A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x2F50 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x2FB8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x1 ADD DUP3 SWAP1 SSTORE PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 DUP5 MSTORE DUP7 DUP2 KECCAK256 DUP12 DUP7 AND DUP3 MSTORE DUP5 MSTORE DUP7 DUP2 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP2 DUP3 AND OR DUP8 SSTORE SWAP3 MLOAD PUSH1 0x1 SWAP7 DUP8 ADD SSTORE SWAP1 DUP2 MSTORE PUSH1 0x11 SWAP1 SWAP3 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 DUP9 ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x3118 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x27AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2794 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID SELFBALANCE PUSH16 0x7665726E616E6365546F6B656E3A3A67 PUSH6 0x745072696F72 JUMP PUSH16 0x7465733A206E6F742079657420646574 PUSH6 0x726D696E6564 SELFBALANCE PUSH16 0x7665726E616E6365546F6B656E3A3A64 PUSH6 0x6C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964206E6F6E636545524332303A2074 PUSH19 0x616E7366657220746F20746865207A65726F20 PUSH2 0x6464 PUSH19 0x657373476F7665726E616E6365546F6B656E3A GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH20 0x756D206F66206D616E75616C4D696E7465642061 PUSH15 0x6420616D6F756E7420677265617465 PUSH19 0x207468616E206D616E75616C4D696E744C696D PUSH10 0x74476F7665726E616E63 PUSH6 0x546F6B656E3A GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A207369676E617475726520657870 PUSH10 0x726564536166654D6174 PUSH9 0x3A206D756C7469706C PUSH10 0x636174696F6E206F7665 PUSH19 0x666C6F7745524332303A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E6365476F PUSH23 0x65726E616E6365546F6B656E3A3A64656C656761746542 PUSH26 0x5369673A20696E76616C6964207369676E617475726545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220311F 0xA7 0xE9 0xE1 0xCC CALLDATALOAD 0xE3 0xA5 0x2D SWAP9 0xDF 0x2D 0x5C SWAP4 PC 0xC4 0xEF 0xC2 ADD 0xA6 AND 0xEF LOG3 SLT COINBASE PUSH27 0xCFF438C96764736F6C634300060C00330000000000000000000000 ",
          "sourceMap": "220:15150:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1517:105:12;;;;;;;;;;;;;;;;-1:-1:-1;1517:105:12;;:::i;:::-;;3235:106:2;;;:::i;:::-;;;;;;;;;;;;;;;;4961:511:12;;;;;;;;;;;;;;;;-1:-1:-1;4961:511:12;;;;:::i;7552:152::-;;;:::i;4877:317:2:-;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;4376:579:12:-;;;;;;;;;;;;;;;;-1:-1:-1;4376:579:12;;;;;;;;;:::i;3086:89:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1080:73:12;;;:::i;5589:215:2:-;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;1940:85:12:-;;;:::i;1241:89::-;;;;;;;;;;;;;;;;-1:-1:-1;1241:89:12;;:::i;3443:159::-;;;;;;;;;;;;;;;;-1:-1:-1;3443:159:12;;;;;;;;;:::i;420:150:9:-;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;4001:134:12:-;;;;;;;;;;;;;;;;-1:-1:-1;4001:134:12;;;;:::i;8621:115::-;;;;;;;;;;;;;;;;-1:-1:-1;8621:115:12;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4141:102;;;;;;;;;;;;;;;;-1:-1:-1;4141:102:12;;;;:::i;8878:::-;;;;;;;;;;;;;;;;-1:-1:-1;8878:102:12;;;;:::i;341:28::-;;;:::i;7434:48::-;;;;;;;;;;;;;;;;-1:-1:-1;7434:48:12;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3399:125:2;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;1717:145:0:-;;;:::i;11423:1265:12:-;;;;;;;;;;;;;;;;-1:-1:-1;11423:1265:12;;;;;;;;;:::i;7998:41::-;;;;;;;;;;;;;;;;-1:-1:-1;7998:41:12;;;;:::i;4249:121::-;;;;;;;;;;;;;;;;-1:-1:-1;4249:121:12;;;;:::i;1085:85:0:-;;;:::i;375:26:12:-;;;:::i;1838:96::-;;;:::i;2370:93:2:-;;;:::i;6063:502:12:-;;;;;;;;;;;;;;;;-1:-1:-1;6063:502:12;;;;:::i;6291:266:2:-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;5478:496:12:-;;;:::i;3727:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;10769:232:12:-;;;;;;;;;;;;;;;;-1:-1:-1;10769:232:12;;;;:::i;151:42:9:-;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;1368:113:12:-;;;;;;;;;;;;;;;;-1:-1:-1;1368:113:12;;:::i;9403:1172::-;;;;;;;;;;;;;;;;-1:-1:-1;9403:1172:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1743:89::-;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;3957:149:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;3608:387:12:-;;;;;;;;;;;;;;;;-1:-1:-1;3608:387:12;;;;;;;;;:::i;443:31::-;;;:::i;7795:125::-;;;:::i;7300:68::-;;;;;;;;;;;;;;;;-1:-1:-1;7300:68:12;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;2011:240:0;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;407:30:12:-;;;:::i;1628:109::-;;;:::i;2168:89:2:-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;;:::o;1517:105:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1591:11:12::1;:24:::0;1517:105::o;3235:106:2:-;3322:12;;3235:106;:::o;4961:511:12:-;5024:7;5062:13;;5047:12;:28;5043:423;;;-1:-1:-1;5098:1:12;5091:8;;5043:423;5136:11;;5120:12;:27;5116:350;;-1:-1:-1;5170:15:12;;;;;;;:6;:15;;;;;;5163:22;;5116:350;5256:25;;;5216:20;5256:25;;;:16;:25;;;;;;5239:43;;:12;;:16;:43::i;:::-;5354:25;;;5296:23;5354:25;;;:16;:25;;;;;;5338:11;;5216:66;;-1:-1:-1;5296:23:12;;5338:42;;:15;:42::i;:::-;5401:15;;;;;;;:6;:15;;;;;;5296:84;;-1:-1:-1;5401:54:12;;5296:84;;5401:33;;5421:12;5401:19;:33::i;:::-;:37;;:54::i;:::-;5394:61;;;;5116:350;4961:511;;;:::o;7552:152::-;7602:102;7552:152;:::o;4877:317:2:-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;4376:579:12:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4459:21:12::1;::::0;::::1;4451:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4558:18;4568:7;4558:9;:18::i;:::-;4547:7;:29;;4526:107;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4644:42;4654:7;4671:4;4678:7;4644:9;:42::i;:::-;4715:15;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:28:::1;::::0;4735:7;4715:19:::1;:28::i;:::-;4697:15;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;:46;4766:10:::1;::::0;:23:::1;::::0;4781:7;4766:14:::1;:23::i;:::-;4753:10;:36:::0;4831:13:::1;::::0;4803:25:::1;::::0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:41:::1;4799:113;;;4888:13;::::0;4860:25:::1;::::0;::::1;;::::0;;;:16:::1;:25;::::0;;;;:41;4799:113:::1;4926:22;::::0;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;4376:579:::0;;:::o;3086:89:2:-;3159:9;;;;3086:89;:::o;1080:73:12:-;1142:4;;1080:73;:::o;5589:215:2:-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;1940:85:12:-;2008:10;;1940:85;:::o;1241:89::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1309:4:12::1;:14:::0;1241:89::o;3443:159::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3514:19:12::1;3520:3;3525:7;3514:5;:19::i;:::-;3570:15;::::0;;::::1;3566:1;3570:15:::0;;;:10:::1;:15;::::0;;;;;3543:52:::1;::::0;3570:15:::1;3587:7:::0;3543:14:::1;:52::i;:::-;3443:159:::0;;:::o;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;4001:134:12:-;4063:7;4089:39;4109:18;4119:7;4109:9;:18::i;:::-;4089:15;;;;;;;:6;:15;;;;;;;:19;:39::i;8621:115::-;8708:21;;;;8682:7;8708:21;;;:10;:21;;;;;;;;8621:115::o;4141:102::-;4221:15;;4195:7;4221:15;;;:6;:15;;;;;;;4141:102::o;8878:::-;8941:32;8951:10;8963:9;8941;:32::i;:::-;8878:102;:::o;341:28::-;;;;:::o;7434:48::-;;;;;;;;;;;;;;;:::o;3399:125:2:-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1807:6:::1;::::0;1786:40:::1;::::0;1823:1:::1;::::0;1807:6:::1;::::0;::::1;1786:40;1807:6;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1836:6;:19:::0;;;::::1;::::0;;1717:145::o;11423:1265:12:-;11531:7;11589:12;11575:11;:26;11554:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11710:23;;;11688:19;11710:23;;;:14;:23;;;;;;;;11747:17;11743:56;;11787:1;11780:8;;;;;11743:56;11856:20;;;;;;;:11;:20;;;;;;;;:38;11877:16;;;11856:38;;;;;;;;;:48;;:63;-1:-1:-1;11852:145:12;;11942:20;;;;;;;:11;:20;;;;;;;;11963:16;;;;;11942:38;;;;;;;;11978:1;11942:44;;;-1:-1:-1;11935:51:12;;11852:145;12055:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;12051:86:12;;;12125:1;12118:8;;;;;12051:86;12147:12;12188:16;;;12214:418;12229:5;12221:13;;:5;:13;;;12214:418;;;12292:1;12275:13;;;12274:19;;;12266:27;;12334:20;;:::i;:::-;-1:-1:-1;12357:20:12;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;12334:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12403:27;;12399:223;;;12457:8;;;;-1:-1:-1;12450:15:12;;-1:-1:-1;;;;12450:15:12;12399:223;12490:12;;:26;;;-1:-1:-1;12486:136:12;;;12544:6;12536:14;;12486:136;;;12606:1;12597:6;:10;12589:18;;12486:136;12214:418;;;;;-1:-1:-1;12648:20:12;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;11423:1265:12;;;;:::o;7998:41::-;;;;;;;;;;;;;:::o;4249:121::-;4338:25;;4312:7;4338:25;;;:16;:25;;;;;;;4249:121::o;1085:85:0:-;1157:6;;;;;;;;1085:85::o;375:26:12:-;;;;:::o;1838:96::-;1888:7;1914:13;:11;:13::i;:::-;1907:20;;1838:96;:::o;2370:93:2:-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6063:502:12;6151:10;6144:18;;;;:6;:18;;;;;;;;6128:11;;;;;;;:35;;:15;:35::i;:::-;6114:11;;;;;;;:6;:11;;;;;;;;:49;;;;6202:13;;6178:16;:21;;;;;;;:37;6174:105;;;6255:13;;6231:21;;;;;;;:16;:21;;;;;:37;6174:105;6334:10;6317:28;;;;:16;:28;;;;;;;;6293:21;;;;;;;:52;6289:135;;;6402:10;6385:28;;;;:16;:28;;;;;;;;6361:21;;;;;;:52;6289:135;6441:10;6455:1;6434:18;;;:6;:18;;;;;;;;:22;;;6466:16;:28;;;;;:32;6509:49;;6531:3;6536:21;6441:10;6536:9;:21::i;:::-;6509:9;:49::i;6291:266:2:-;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;5478:496:12:-;5528:10;5542:1;5521:18;;;:6;:18;;;;;;5513:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5579:14;5596:27;5612:10;5596:15;:27::i;:::-;5579:44;;5671:24;5689:4;5671:9;:24::i;:::-;5662:6;:33;5658:97;;;5720:24;5738:4;5720:9;:24::i;:::-;5711:33;;5658:97;5764:44;5782:4;5789:10;5801:6;5764:9;:44::i;:::-;5846:10;5839:18;;;;:6;:18;;;;;;:30;;5862:6;5839:22;:30::i;:::-;5825:10;5818:18;;;;:6;:18;;;;;;;;:51;;;;5879:16;:28;;;5910:12;5879:43;;5945:10;;:22;;5960:6;5945:14;:22::i;:::-;5932:10;:35;-1:-1:-1;5478:496:12:o;3727:172:2:-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;10769:232:12:-;10875:23;;;10834:7;10875:23;;;:14;:23;;;;;;;;10927:16;:67;;10993:1;10927:67;;;10946:20;;;;;;;:11;:20;;;;;;;;:38;10967:16;;;10946:38;;;;;;;;10982:1;10946:44;;10927:67;10908:86;10769:232;-1:-1:-1;;;10769:232:12:o;151:42:9:-;;;;;;;;;;;;;;;:::o;1368:113:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1446:13:12::1;:28:::0;1368:113::o;9403:1172::-;9580:23;7602:102;9730:6;:4;:6::i;:::-;9714:24;;;;;;9760:12;:10;:12::i;:::-;9645:180;;;;;;;;;;;;;;;;;;;;;;;;;9802:4;9645:180;;;;;;;;;;;;;;;;;;;;;;;9618:221;;;;;;7849:71;9910:57;;;;9645:180;9910:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:98;;;;;;10048:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10021:98;;;;;;;;;-1:-1:-1;10150:26:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:221;;-1:-1:-1;9883:98:12;;10021;;-1:-1:-1;;10150:26:12;;;;;;;-1:-1:-1;10150:26:12;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10150:26:12;;;;;;-1:-1:-1;;10207:23:12;;;10186:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10345:17;;;;;;;:6;:17;;;;;:19;;;;;;;;10336:28;;10315:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:6;10453:3;:13;;10445:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10537:31;10547:9;10558;10537;:31::i;:::-;10530:38;;;;9403:1172;;;;;;;:::o;1743:89::-;1788:7;1814:11;:9;:11::i;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;:10:::1;:18;::::0;;;;:25;;;::::1;403:4;382:25;::::0;;316:98::o;3957:149:2:-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;3608:387:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3740:15:12::1;::::0;3711:12:::1;::::0;:25:::1;::::0;3728:7;3711:16:::1;:25::i;:::-;:44;;3690:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:19;3863:3;3868:7;3857:5;:19::i;:::-;3913:15;::::0;;::::1;3909:1;3913:15:::0;;;:10:::1;:15;::::0;;;;;3886:52:::1;::::0;3913:15:::1;3930:7:::0;3886:14:::1;:52::i;:::-;3963:12;::::0;:25:::1;::::0;3980:7;3963:16:::1;:25::i;:::-;3948:12;:40:::0;-1:-1:-1;;3608:387:12:o;443:31::-;;;;:::o;7795:125::-;7849:71;7795:125;:::o;7300:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6:::1;::::0;::::1;;::::0;2179:38:::1;::::0;;;::::1;2227:6;:17:::0;;::::1;::::0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;407:30:12:-;;;;:::o;1628:109::-;1675:7;1701:29;1719:10;;1701:13;:11;:13::i;:::-;:17;;:29::i;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o;3538:215::-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;3077:260:12:-;3213:42;3229:6;3237:9;3248:6;3213:15;:42::i;:::-;3280:18;;;;;;;;:10;:18;;;;;;;3300:21;;;;;;;;3265:65;;3280:18;;;;3300:21;3323:6;3265:14;:65::i;:::-;3077:260;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7832:370:2;7915:21;;;7907:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;8113:18;;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;8092:18;;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;13071:1095:12:-;13206:6;13196:16;;:6;:16;;;;:30;;;;;13225:1;13216:6;:10;13196:30;13192:968;;;13246:20;;;;13242:447;;13352:22;;;13333:16;13352:22;;;:14;:22;;;;;;;;;13432:13;:108;;13539:1;13432:108;;;13472:19;;;;;;;:11;:19;;;;;;;;:34;13492:13;;;13472:34;;;;;;;;13504:1;13472:40;;13432:108;13392:148;-1:-1:-1;13558:17:12;13578:21;13392:148;13592:6;13578:13;:21::i;:::-;13558:41;;13617:57;13634:6;13642:9;13653;13664;13617:16;:57::i;:::-;13242:447;;;;13707:20;;;;13703:447;;13813:22;;;13794:16;13813:22;;;:14;:22;;;;;;;;;13893:13;:108;;14000:1;13893:108;;;13933:19;;;;;;;:11;:19;;;;;;;;:34;13953:13;;;13933:34;;;;;;;;13965:1;13933:40;;13893:108;13853:148;-1:-1:-1;14019:17:12;14039:21;13853:148;14053:6;14039:13;:21::i;:::-;14019:41;;14078:57;14095:6;14103:9;14114;14125;14078:16;:57::i;12694:371::-;12796:21;;;;12770:23;12796:21;;;:10;:21;;;;;;;;;;12854:20;12807:9;12854;:20::i;:::-;12884:21;;;;;;;;:10;:21;;;;;;:33;;;;;;;;;;;;;12933:54;;12827:47;;-1:-1:-1;12884:33:12;12933:54;;;;;;12884:21;12933:54;12998:60;13013:15;13030:9;13041:16;12998:14;:60::i;:::-;12694:371;;;;:::o;15196:172::-;15319:9;15196:172;:::o;7031:530:2:-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;2203:400:12:-;2341:44;2368:4;2374:2;2378:6;2341:26;:44::i;:::-;2400:18;;;2396:201;;2523:4;;2494:25;2512:6;2494:13;:11;:13::i;:::-;:17;;:25::i;:::-;:33;;2469:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14172:823;14331:18;14364:133;14388:12;14364:133;;;;;;;;;;;;;;;;;:6;:133::i;:::-;14331:166;;14540:1;14525:12;:16;;;:97;;;;-1:-1:-1;14557:22:12;;;;;;;:11;:22;;;;;;;;:65;14580:16;;;14557:40;;;;;;;;;:50;:65;;;:50;;:65;14525:97;14508:414;;;14647:22;;;;;;;:11;:22;;;;;;;;:40;14670:16;;;14647:40;;;;;;;;14685:1;14647:46;:57;;;14508:414;;;14774:79;;;;;;;;;;;;;;;;;;;;;14735:22;;;-1:-1:-1;14735:22:12;;;:11;:22;;;;;:36;;;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;14867:25;;;:14;:25;;;;;;:44;;14895:16;;;14867:44;;;;;;;;;;14508:414;14937:51;;;;;;;;;;;;;;;;;;;;;;;;;;14172:823;;;;;:::o;15001:189::-;15103:6;15144:12;15137:5;15133:9;;15125:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15181:1:12;;15001:189;-1:-1:-1;;15001:189:12:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"cap_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_manualMintLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lockFromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lockToBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toAdd\",\"type\":\"address\"}],\"name\":\"addAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"canUnlockAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newCap\",\"type\":\"uint256\"}],\"name\":\"capUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"fromBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"circulatingSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"lastUnlockBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockFromBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newLockFrom\",\"type\":\"uint256\"}],\"name\":\"lockFromUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"lockOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockToBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newLockTo\",\"type\":\"uint256\"}],\"name\":\"lockToUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"manualMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toRemove\",\"type\":\"address\"}],\"name\":\"removeAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"transferAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockedSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"cap()\":{\"details\":\"Returns the cap on the token's total supply.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"delegate(address)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\"}},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\",\"expiry\":\"The time at which to expire the signature\",\"nonce\":\"The contract state required to match the signature\",\"r\":\"Half of the ECDSA signature pair\",\"s\":\"Half of the ECDSA signature pair\",\"v\":\"The recovery byte of the signature\"}},\"delegates(address)\":{\"params\":{\"delegator\":\"The address to get delegatee for\"}},\"getCurrentVotes(address)\":{\"params\":{\"account\":\"The address to get votes balance\"},\"returns\":{\"_0\":\"The number of current votes for `account`\"}},\"getPriorVotes(address,uint256)\":{\"details\":\"Block number must be a finalized block or else this function will revert to prevent misinformation.\",\"params\":{\"account\":\"The address of the account to check\",\"blockNumber\":\"The block number to get the vote balance at\"},\"returns\":{\"_0\":\"The number of votes the account had as of the given block\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"_delegates\":{\"details\":\"A record of each accounts delegate\"}},\"version\":1},\"userdoc\":{\"events\":{\"DelegateChanged(address,address,address)\":{\"notice\":\"An event thats emitted when an account changes its delegate\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"notice\":\"An event thats emitted when a delegate account's vote balance changes\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the delegation struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"checkpoints(address,uint32)\":{\"notice\":\"A record of votes checkpoints for each account, by index\"},\"delegate(address)\":{\"notice\":\"Delegate votes from `msg.sender` to `delegatee`\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Delegates votes from signatory to `delegatee`\"},\"delegates(address)\":{\"notice\":\"Delegate votes from `msg.sender` to `delegatee`\"},\"getCurrentVotes(address)\":{\"notice\":\"Gets the current votes balance for `account`\"},\"getPriorVotes(address,uint256)\":{\"notice\":\"Determine the prior number of votes for an account as of a block number\"},\"mint(address,uint256)\":{\"notice\":\"Creates `_amount` token to `_to`. Must only be called by the owner (MasterBreeder).\"},\"nonces(address)\":{\"notice\":\"A record of states for signing / validating signatures\"},\"numCheckpoints(address)\":{\"notice\":\"The number of checkpoints for each account\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GovernanceToken.sol\":\"GovernanceToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/Authorizable.sol\":{\"keccak256\":\"0xc15372825a5b752d8515abd72d54cbf8556b2b611b26e5f2b6eac9cfdba3e95f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9ffa0813c53c5ab639eecabc06c5f4bc272a378ae3d94583f6569e1de1c5124\",\"dweb:/ipfs/QmWWxnv88Pd6YtFGjgHYtL5t24m2sDrVHV6CrKETZwi2Ci\"]},\"contracts/GovernanceToken.sol\":{\"keccak256\":\"0x21d5613ae6c463c7d677d0f51453f5324e44e11b33f4101b9d584e14df87f9de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc78974f53f2a8aaf8e445fc063b65b70499a903d03382149ff740d0770181d8\",\"dweb:/ipfs/QmZZ4WqDQSANnfDY6mGXDKDeaDqGeb3T3TfU73eifbm6nq\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "cap_",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_manualMintLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_lockFromBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_lockToBlock",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "fromDelegate",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "toDelegate",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "previousBalance",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newBalance",
              "type": "uint256"
            }
          ],
          "name": "DelegateVotesChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Lock",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DELEGATION_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "DOMAIN_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "canUnlockAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newCap",
              "type": "uint256"
            }
          ],
          "name": "capUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "name": "checkpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "fromBlock",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "votes",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "circulatingSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            }
          ],
          "name": "delegate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "delegateBySig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            }
          ],
          "name": "delegates",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getCurrentVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lastUnlockBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "lock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockFromBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockFrom",
              "type": "uint256"
            }
          ],
          "name": "lockFromUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lockOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockToBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockTo",
              "type": "uint256"
            }
          ],
          "name": "lockToUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "manualMint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "manualMintLimit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "manualMinted",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "numCheckpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "totalBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalLock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            }
          ],
          "name": "transferAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "60806040526000600c553480156200001657600080fd5b506040516200372138038062003721833981810160405260c08110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82516401000000008111828201881017156200008e57600080fd5b82525081516020918201929091019080838360005b83811015620000bd578181015183820152602001620000a3565b50505050905090810190601f168015620000eb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b50604090815260208281015191830151606084015160809094015188519396509094509187918791620001d791600391908501906200027e565b508051620001ed9060049060208401906200027e565b50506005805460ff19166012179055506000620002096200027a565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600793909355600b91909155600955600a55506200031a9050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c157805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f1578251825591602001919060010190620002d4565b50620002ff92915062000303565b5090565b5b80821115620002ff576000815560010162000304565b6133f7806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661221a565b610416612220565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612244565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612271565b61041661241d565b610416612423565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb8612439565b848461243d565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612584565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612584565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125fb565b9061266e565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126ef565b610dcc84610d4e612439565b610dc7856040518060600160405280602881526020016132fb6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d99612439565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061273e565b61243d565b5060019392505050565b610dde612439565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127ef565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad612439565b84610dc785600160006110be612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127ef565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b611151612439565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612994565b5050565b611239612439565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127ef565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b75565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b611430612439565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806131386032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613120565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126ef565b6000610bbf611a39612439565b84610dc78560405180606001604052806025815260200161339d6025913960016000611a63612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061273e565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126ef565b336000908152600d6020526040902054611b6a9082612584565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612584565b60085550565b6000610bbf611ba8612439565b84846126ef565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c3c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133236031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061316a602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806132a96031913960400191505060405180910390fd5b611fda818b612b75565b505050505b505050505050565b60006118796110fb565b611ff9612439565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c5461217390836127ef565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806132676042913960600191505060405180910390fd5b6121d48282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f6020526040812054612206921683612994565b600c5461221390826127ef565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b612279612439565b73ffffffffffffffffffffffffffffffffffffffff16612297611848565b73ffffffffffffffffffffffffffffffffffffffff161461231957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612433610c11565b90612584565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133796024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261260a57506000610bc3565b8282028284828161261757fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132da6021913960400191505060405180910390fd5b60008082116126de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126e757fe5b049392505050565b6126fa838383612c40565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461273992918216911683612994565b505050565b600081848411156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ac578181015183820152602001612794565b50505050905090810190601f1680156127d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128f160008383612e10565b6002546128fe90826127ef565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461293190826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d05750600081115b156127395773ffffffffffffffffffffffffffffffffffffffff831615612aa75773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a2a576000612a87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a958285612584565b9050612aa386848484612eb8565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156127395773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612afc576000612b59565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b6782856127ef565b9050611fdf85848484612eb8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612ba984611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c36828483612994565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612cac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133546025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131976023913960400191505060405180910390fd5b612d23838383612e10565b612d6d816040518060600160405280602681526020016132416026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919061273e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612da990826127ef565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1b838383612739565b73ffffffffffffffffffffffffffffffffffffffff831661273957600754612e4b82612e45610c11565b906127ef565b111561273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612edc436040518060600160405280603f81526020016131ba603f91396130a8565b905060008463ffffffff16118015612f50575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fb85773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613051565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410613118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127ac578181015183820152602001612794565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220311fa7e9e1cc35e3a52d98df2d5c9358c4efc201a616efa312417acff438c96764736f6c634300060c0033",
      "bin": "60806040526000600c553480156200001657600080fd5b506040516200372138038062003721833981810160405260c08110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82516401000000008111828201881017156200008e57600080fd5b82525081516020918201929091019080838360005b83811015620000bd578181015183820152602001620000a3565b50505050905090810190601f168015620000eb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b50604090815260208281015191830151606084015160809094015188519396509094509187918791620001d791600391908501906200027e565b508051620001ed9060049060208401906200027e565b50506005805460ff19166012179055506000620002096200027a565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600793909355600b91909155600955600a55506200031a9050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c157805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f1578251825591602001919060010190620002d4565b50620002ff92915062000303565b5090565b5b80821115620002ff576000815560010162000304565b6133f7806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661221a565b610416612220565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612244565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612271565b61041661241d565b610416612423565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb8612439565b848461243d565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612584565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612584565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125fb565b9061266e565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126ef565b610dcc84610d4e612439565b610dc7856040518060600160405280602881526020016132fb6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d99612439565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061273e565b61243d565b5060019392505050565b610dde612439565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127ef565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad612439565b84610dc785600160006110be612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127ef565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b611151612439565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612994565b5050565b611239612439565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127ef565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b75565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b611430612439565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806131386032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613120565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126ef565b6000610bbf611a39612439565b84610dc78560405180606001604052806025815260200161339d6025913960016000611a63612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061273e565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126ef565b336000908152600d6020526040902054611b6a9082612584565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612584565b60085550565b6000610bbf611ba8612439565b84846126ef565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c3c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133236031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061316a602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806132a96031913960400191505060405180910390fd5b611fda818b612b75565b505050505b505050505050565b60006118796110fb565b611ff9612439565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c5461217390836127ef565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806132676042913960600191505060405180910390fd5b6121d48282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f6020526040812054612206921683612994565b600c5461221390826127ef565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b612279612439565b73ffffffffffffffffffffffffffffffffffffffff16612297611848565b73ffffffffffffffffffffffffffffffffffffffff161461231957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612433610c11565b90612584565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133796024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261260a57506000610bc3565b8282028284828161261757fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132da6021913960400191505060405180910390fd5b60008082116126de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126e757fe5b049392505050565b6126fa838383612c40565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461273992918216911683612994565b505050565b600081848411156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ac578181015183820152602001612794565b50505050905090810190601f1680156127d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128f160008383612e10565b6002546128fe90826127ef565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461293190826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d05750600081115b156127395773ffffffffffffffffffffffffffffffffffffffff831615612aa75773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a2a576000612a87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a958285612584565b9050612aa386848484612eb8565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156127395773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612afc576000612b59565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b6782856127ef565b9050611fdf85848484612eb8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612ba984611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c36828483612994565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612cac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133546025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131976023913960400191505060405180910390fd5b612d23838383612e10565b612d6d816040518060600160405280602681526020016132416026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919061273e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612da990826127ef565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1b838383612739565b73ffffffffffffffffffffffffffffffffffffffff831661273957600754612e4b82612e45610c11565b906127ef565b111561273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612edc436040518060600160405280603f81526020016131ba603f91396130a8565b905060008463ffffffff16118015612f50575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fb85773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613051565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410613118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127ac578181015183820152602001612794565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220311fa7e9e1cc35e3a52d98df2d5c9358c4efc201a616efa312417acff438c96764736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661221a565b610416612220565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612244565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612271565b61041661241d565b610416612423565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb8612439565b848461243d565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612584565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612584565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125fb565b9061266e565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126ef565b610dcc84610d4e612439565b610dc7856040518060600160405280602881526020016132fb6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d99612439565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061273e565b61243d565b5060019392505050565b610dde612439565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127ef565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad612439565b84610dc785600160006110be612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127ef565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b611151612439565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612994565b5050565b611239612439565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127ef565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b75565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b611430612439565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806131386032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613120565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127ef565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126ef565b6000610bbf611a39612439565b84610dc78560405180606001604052806025815260200161339d6025913960016000611a63612439565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061273e565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126ef565b336000908152600d6020526040902054611b6a9082612584565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612584565b60085550565b6000610bbf611ba8612439565b84846126ef565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c3c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133236031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061316a602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806132a96031913960400191505060405180910390fd5b611fda818b612b75565b505050505b505050505050565b60006118796110fb565b611ff9612439565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c5461217390836127ef565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806132676042913960600191505060405180910390fd5b6121d48282612863565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f6020526040812054612206921683612994565b600c5461221390826127ef565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b612279612439565b73ffffffffffffffffffffffffffffffffffffffff16612297611848565b73ffffffffffffffffffffffffffffffffffffffff161461231957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131f96026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612433610c11565b90612584565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133796024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061321f6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261260a57506000610bc3565b8282028284828161261757fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132da6021913960400191505060405180910390fd5b60008082116126de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126e757fe5b049392505050565b6126fa838383612c40565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461273992918216911683612994565b505050565b600081848411156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ac578181015183820152602001612794565b50505050905090810190601f1680156127d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128f160008383612e10565b6002546128fe90826127ef565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461293190826127ef565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d05750600081115b156127395773ffffffffffffffffffffffffffffffffffffffff831615612aa75773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a2a576000612a87565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a958285612584565b9050612aa386848484612eb8565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156127395773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612afc576000612b59565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b6782856127ef565b9050611fdf85848484612eb8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612ba984611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c36828483612994565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612cac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133546025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131976023913960400191505060405180910390fd5b612d23838383612e10565b612d6d816040518060600160405280602681526020016132416026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919061273e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612da990826127ef565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1b838383612739565b73ffffffffffffffffffffffffffffffffffffffff831661273957600754612e4b82612e45610c11565b906127ef565b111561273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612edc436040518060600160405280603f81526020016131ba603f91396130a8565b905060008463ffffffff16118015612f50575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fb85773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613051565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410613118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127ac578181015183820152602001612794565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220311fa7e9e1cc35e3a52d98df2d5c9358c4efc201a616efa312417acff438c96764736f6c634300060c0033",
      "srcmap": "220:15150:12:-:0;;;473:1;443:31;;640:361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;640:361:12;;;;;;;;;;;;;;;;;;;;;;2032:13:2;;640:361:12;;-1:-1:-1;640:361:12;;-1:-1:-1;640:361:12;837:5;;844:7;;2032:13:2;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;2082:9:2;904:12:0;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;;-1:-1:-1;;;;;926:18:0;;;;;;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;-1:-1:-1;;959:43:0;;-1:-1:-1;;959:43:0;-1:-1:-1;863:4:12::1;:11:::0;;;;884:15:::1;:34:::0;;;;928:13:::1;:30:::0;968:11:::1;:26:::0;-1:-1:-1;220:15150:12;;-1:-1:-1;220:15150:12;598:104:6;685:10;598:104;:::o;220:15150:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;220:15150:12;;;-1:-1:-1;220:15150:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "220:15150:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1517:105:12;;;;;;;;;;;;;;;;-1:-1:-1;1517:105:12;;:::i;:::-;;3235:106:2;;;:::i;:::-;;;;;;;;;;;;;;;;4961:511:12;;;;;;;;;;;;;;;;-1:-1:-1;4961:511:12;;;;:::i;7552:152::-;;;:::i;4877:317:2:-;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;4376:579:12:-;;;;;;;;;;;;;;;;-1:-1:-1;4376:579:12;;;;;;;;;:::i;3086:89:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1080:73:12;;;:::i;5589:215:2:-;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;1940:85:12:-;;;:::i;1241:89::-;;;;;;;;;;;;;;;;-1:-1:-1;1241:89:12;;:::i;3443:159::-;;;;;;;;;;;;;;;;-1:-1:-1;3443:159:12;;;;;;;;;:::i;420:150:9:-;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;4001:134:12:-;;;;;;;;;;;;;;;;-1:-1:-1;4001:134:12;;;;:::i;8621:115::-;;;;;;;;;;;;;;;;-1:-1:-1;8621:115:12;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4141:102;;;;;;;;;;;;;;;;-1:-1:-1;4141:102:12;;;;:::i;8878:::-;;;;;;;;;;;;;;;;-1:-1:-1;8878:102:12;;;;:::i;341:28::-;;;:::i;7434:48::-;;;;;;;;;;;;;;;;-1:-1:-1;7434:48:12;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3399:125:2;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;1717:145:0:-;;;:::i;11423:1265:12:-;;;;;;;;;;;;;;;;-1:-1:-1;11423:1265:12;;;;;;;;;:::i;7998:41::-;;;;;;;;;;;;;;;;-1:-1:-1;7998:41:12;;;;:::i;4249:121::-;;;;;;;;;;;;;;;;-1:-1:-1;4249:121:12;;;;:::i;1085:85:0:-;;;:::i;375:26:12:-;;;:::i;1838:96::-;;;:::i;2370:93:2:-;;;:::i;6063:502:12:-;;;;;;;;;;;;;;;;-1:-1:-1;6063:502:12;;;;:::i;6291:266:2:-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;5478:496:12:-;;;:::i;3727:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;10769:232:12:-;;;;;;;;;;;;;;;;-1:-1:-1;10769:232:12;;;;:::i;151:42:9:-;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;1368:113:12:-;;;;;;;;;;;;;;;;-1:-1:-1;1368:113:12;;:::i;9403:1172::-;;;;;;;;;;;;;;;;-1:-1:-1;9403:1172:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1743:89::-;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;3957:149:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;3608:387:12:-;;;;;;;;;;;;;;;;-1:-1:-1;3608:387:12;;;;;;;;;:::i;443:31::-;;;:::i;7795:125::-;;;:::i;7300:68::-;;;;;;;;;;;;;;;;-1:-1:-1;7300:68:12;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;2011:240:0;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;407:30:12:-;;;:::i;1628:109::-;;;:::i;2168:89:2:-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;;:::o;1517:105:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1591:11:12::1;:24:::0;1517:105::o;3235:106:2:-;3322:12;;3235:106;:::o;4961:511:12:-;5024:7;5062:13;;5047:12;:28;5043:423;;;-1:-1:-1;5098:1:12;5091:8;;5043:423;5136:11;;5120:12;:27;5116:350;;-1:-1:-1;5170:15:12;;;;;;;:6;:15;;;;;;5163:22;;5116:350;5256:25;;;5216:20;5256:25;;;:16;:25;;;;;;5239:43;;:12;;:16;:43::i;:::-;5354:25;;;5296:23;5354:25;;;:16;:25;;;;;;5338:11;;5216:66;;-1:-1:-1;5296:23:12;;5338:42;;:15;:42::i;:::-;5401:15;;;;;;;:6;:15;;;;;;5296:84;;-1:-1:-1;5401:54:12;;5296:84;;5401:33;;5421:12;5401:19;:33::i;:::-;:37;;:54::i;:::-;5394:61;;;;5116:350;4961:511;;;:::o;7552:152::-;7602:102;7552:152;:::o;4877:317:2:-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;4376:579:12:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4459:21:12::1;::::0;::::1;4451:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4558:18;4568:7;4558:9;:18::i;:::-;4547:7;:29;;4526:107;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4644:42;4654:7;4671:4;4678:7;4644:9;:42::i;:::-;4715:15;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:28:::1;::::0;4735:7;4715:19:::1;:28::i;:::-;4697:15;::::0;::::1;;::::0;;;:6:::1;:15;::::0;;;;:46;4766:10:::1;::::0;:23:::1;::::0;4781:7;4766:14:::1;:23::i;:::-;4753:10;:36:::0;4831:13:::1;::::0;4803:25:::1;::::0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:41:::1;4799:113;;;4888:13;::::0;4860:25:::1;::::0;::::1;;::::0;;;:16:::1;:25;::::0;;;;:41;4799:113:::1;4926:22;::::0;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;4376:579:::0;;:::o;3086:89:2:-;3159:9;;;;3086:89;:::o;1080:73:12:-;1142:4;;1080:73;:::o;5589:215:2:-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;1940:85:12:-;2008:10;;1940:85;:::o;1241:89::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1309:4:12::1;:14:::0;1241:89::o;3443:159::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3514:19:12::1;3520:3;3525:7;3514:5;:19::i;:::-;3570:15;::::0;;::::1;3566:1;3570:15:::0;;;:10:::1;:15;::::0;;;;;3543:52:::1;::::0;3570:15:::1;3587:7:::0;3543:14:::1;:52::i;:::-;3443:159:::0;;:::o;420:150:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;4001:134:12:-;4063:7;4089:39;4109:18;4119:7;4109:9;:18::i;:::-;4089:15;;;;;;;:6;:15;;;;;;;:19;:39::i;8621:115::-;8708:21;;;;8682:7;8708:21;;;:10;:21;;;;;;;;8621:115::o;4141:102::-;4221:15;;4195:7;4221:15;;;:6;:15;;;;;;;4141:102::o;8878:::-;8941:32;8951:10;8963:9;8941;:32::i;:::-;8878:102;:::o;341:28::-;;;;:::o;7434:48::-;;;;;;;;;;;;;;;:::o;3399:125:2:-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1807:6:::1;::::0;1786:40:::1;::::0;1823:1:::1;::::0;1807:6:::1;::::0;::::1;1786:40;1807:6;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1836:6;:19:::0;;;::::1;::::0;;1717:145::o;11423:1265:12:-;11531:7;11589:12;11575:11;:26;11554:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11710:23;;;11688:19;11710:23;;;:14;:23;;;;;;;;11747:17;11743:56;;11787:1;11780:8;;;;;11743:56;11856:20;;;;;;;:11;:20;;;;;;;;:38;11877:16;;;11856:38;;;;;;;;;:48;;:63;-1:-1:-1;11852:145:12;;11942:20;;;;;;;:11;:20;;;;;;;;11963:16;;;;;11942:38;;;;;;;;11978:1;11942:44;;;-1:-1:-1;11935:51:12;;11852:145;12055:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;12051:86:12;;;12125:1;12118:8;;;;;12051:86;12147:12;12188:16;;;12214:418;12229:5;12221:13;;:5;:13;;;12214:418;;;12292:1;12275:13;;;12274:19;;;12266:27;;12334:20;;:::i;:::-;-1:-1:-1;12357:20:12;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;12334:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12403:27;;12399:223;;;12457:8;;;;-1:-1:-1;12450:15:12;;-1:-1:-1;;;;12450:15:12;12399:223;12490:12;;:26;;;-1:-1:-1;12486:136:12;;;12544:6;12536:14;;12486:136;;;12606:1;12597:6;:10;12589:18;;12486:136;12214:418;;;;;-1:-1:-1;12648:20:12;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;11423:1265:12;;;;:::o;7998:41::-;;;;;;;;;;;;;:::o;4249:121::-;4338:25;;4312:7;4338:25;;;:16;:25;;;;;;;4249:121::o;1085:85:0:-;1157:6;;;;;;;;1085:85::o;375:26:12:-;;;;:::o;1838:96::-;1888:7;1914:13;:11;:13::i;:::-;1907:20;;1838:96;:::o;2370:93:2:-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6063:502:12;6151:10;6144:18;;;;:6;:18;;;;;;;;6128:11;;;;;;;:35;;:15;:35::i;:::-;6114:11;;;;;;;:6;:11;;;;;;;;:49;;;;6202:13;;6178:16;:21;;;;;;;:37;6174:105;;;6255:13;;6231:21;;;;;;;:16;:21;;;;;:37;6174:105;6334:10;6317:28;;;;:16;:28;;;;;;;;6293:21;;;;;;;:52;6289:135;;;6402:10;6385:28;;;;:16;:28;;;;;;;;6361:21;;;;;;:52;6289:135;6441:10;6455:1;6434:18;;;:6;:18;;;;;;;;:22;;;6466:16;:28;;;;;:32;6509:49;;6531:3;6536:21;6441:10;6536:9;:21::i;:::-;6509:9;:49::i;6291:266:2:-;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;5478:496:12:-;5528:10;5542:1;5521:18;;;:6;:18;;;;;;5513:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5579:14;5596:27;5612:10;5596:15;:27::i;:::-;5579:44;;5671:24;5689:4;5671:9;:24::i;:::-;5662:6;:33;5658:97;;;5720:24;5738:4;5720:9;:24::i;:::-;5711:33;;5658:97;5764:44;5782:4;5789:10;5801:6;5764:9;:44::i;:::-;5846:10;5839:18;;;;:6;:18;;;;;;:30;;5862:6;5839:22;:30::i;:::-;5825:10;5818:18;;;;:6;:18;;;;;;;;:51;;;;5879:16;:28;;;5910:12;5879:43;;5945:10;;:22;;5960:6;5945:14;:22::i;:::-;5932:10;:35;-1:-1:-1;5478:496:12:o;3727:172:2:-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;10769:232:12:-;10875:23;;;10834:7;10875:23;;;:14;:23;;;;;;;;10927:16;:67;;10993:1;10927:67;;;10946:20;;;;;;;:11;:20;;;;;;;;:38;10967:16;;;10946:38;;;;;;;;10982:1;10946:44;;10927:67;10908:86;10769:232;-1:-1:-1;;;10769:232:12:o;151:42:9:-;;;;;;;;;;;;;;;:::o;1368:113:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;1446:13:12::1;:28:::0;1368:113::o;9403:1172::-;9580:23;7602:102;9730:6;:4;:6::i;:::-;9714:24;;;;;;9760:12;:10;:12::i;:::-;9645:180;;;;;;;;;;;;;;;;;;;;;;;;;9802:4;9645:180;;;;;;;;;;;;;;;;;;;;;;;9618:221;;;;;;7849:71;9910:57;;;;9645:180;9910:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:98;;;;;;10048:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10021:98;;;;;;;;;-1:-1:-1;10150:26:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:221;;-1:-1:-1;9883:98:12;;10021;;-1:-1:-1;;10150:26:12;;;;;;;-1:-1:-1;10150:26:12;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10150:26:12;;;;;;-1:-1:-1;;10207:23:12;;;10186:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10345:17;;;;;;;:6;:17;;;;;:19;;;;;;;;10336:28;;10315:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:6;10453:3;:13;;10445:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10537:31;10547:9;10558;10537;:31::i;:::-;10530:38;;;;9403:1172;;;;;;;:::o;1743:89::-;1788:7;1814:11;:9;:11::i;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;:10:::1;:18;::::0;;;;:25;;;::::1;403:4;382:25;::::0;;316:98::o;3957:149:2:-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;3608:387:12:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;3740:15:12::1;::::0;3711:12:::1;::::0;:25:::1;::::0;3728:7;3711:16:::1;:25::i;:::-;:44;;3690:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:19;3863:3;3868:7;3857:5;:19::i;:::-;3913:15;::::0;;::::1;3909:1;3913:15:::0;;;:10:::1;:15;::::0;;;;;3886:52:::1;::::0;3913:15:::1;3930:7:::0;3886:14:::1;:52::i;:::-;3963:12;::::0;:25:::1;::::0;3980:7;3963:16:::1;:25::i;:::-;3948:12;:40:::0;-1:-1:-1;;3608:387:12:o;443:31::-;;;;:::o;7795:125::-;7849:71;7795:125;:::o;7300:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6:::1;::::0;::::1;;::::0;2179:38:::1;::::0;;;::::1;2227:6;:17:::0;;::::1;::::0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;407:30:12:-;;;;:::o;1628:109::-;1675:7;1701:29;1719:10;;1701:13;:11;:13::i;:::-;:17;;:29::i;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o;3538:215::-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;3077:260:12:-;3213:42;3229:6;3237:9;3248:6;3213:15;:42::i;:::-;3280:18;;;;;;;;:10;:18;;;;;;;3300:21;;;;;;;;3265:65;;3280:18;;;;3300:21;3323:6;3265:14;:65::i;:::-;3077:260;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7832:370:2;7915:21;;;7907:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;8113:18;;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;8092:18;;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;13071:1095:12:-;13206:6;13196:16;;:6;:16;;;;:30;;;;;13225:1;13216:6;:10;13196:30;13192:968;;;13246:20;;;;13242:447;;13352:22;;;13333:16;13352:22;;;:14;:22;;;;;;;;;13432:13;:108;;13539:1;13432:108;;;13472:19;;;;;;;:11;:19;;;;;;;;:34;13492:13;;;13472:34;;;;;;;;13504:1;13472:40;;13432:108;13392:148;-1:-1:-1;13558:17:12;13578:21;13392:148;13592:6;13578:13;:21::i;:::-;13558:41;;13617:57;13634:6;13642:9;13653;13664;13617:16;:57::i;:::-;13242:447;;;;13707:20;;;;13703:447;;13813:22;;;13794:16;13813:22;;;:14;:22;;;;;;;;;13893:13;:108;;14000:1;13893:108;;;13933:19;;;;;;;:11;:19;;;;;;;;:34;13953:13;;;13933:34;;;;;;;;13965:1;13933:40;;13893:108;13853:148;-1:-1:-1;14019:17:12;14039:21;13853:148;14053:6;14039:13;:21::i;:::-;14019:41;;14078:57;14095:6;14103:9;14114;14125;14078:16;:57::i;12694:371::-;12796:21;;;;12770:23;12796:21;;;:10;:21;;;;;;;;;;12854:20;12807:9;12854;:20::i;:::-;12884:21;;;;;;;;:10;:21;;;;;;:33;;;;;;;;;;;;;12933:54;;12827:47;;-1:-1:-1;12884:33:12;12933:54;;;;;;12884:21;12933:54;12998:60;13013:15;13030:9;13041:16;12998:14;:60::i;:::-;12694:371;;;;:::o;15196:172::-;15319:9;15196:172;:::o;7031:530:2:-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;2203:400:12:-;2341:44;2368:4;2374:2;2378:6;2341:26;:44::i;:::-;2400:18;;;2396:201;;2523:4;;2494:25;2512:6;2494:13;:11;:13::i;:::-;:17;;:25::i;:::-;:33;;2469:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14172:823;14331:18;14364:133;14388:12;14364:133;;;;;;;;;;;;;;;;;:6;:133::i;:::-;14331:166;;14540:1;14525:12;:16;;;:97;;;;-1:-1:-1;14557:22:12;;;;;;;:11;:22;;;;;;;;:65;14580:16;;;14557:40;;;;;;;;;:50;:65;;;:50;;:65;14525:97;14508:414;;;14647:22;;;;;;;:11;:22;;;;;;;;:40;14670:16;;;14647:40;;;;;;;;14685:1;14647:46;:57;;;14508:414;;;14774:79;;;;;;;;;;;;;;;;;;;;;14735:22;;;-1:-1:-1;14735:22:12;;;:11;:22;;;;;:36;;;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;14867:25;;;:14;:25;;;;;;:44;;14895:16;;;14867:44;;;;;;;;;;14508:414;14937:51;;;;;;;;;;;;;;;;;;;;;;;;;;14172:823;;;;;:::o;15001:189::-;15103:6;15144:12;15137:5;15133:9;;15125:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15181:1:12;;15001:189;-1:-1:-1;;15001:189:12:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o"
    },
    "contracts/GovernanceVote.sol:GovernanceVote": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            },
            {
              "internalType": "contract IGovernanceToken",
              "name": "govToken_",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "pit_",
              "type": "address"
            },
            {
              "internalType": "contract IMasterBreeder",
              "name": "masterBreeder_",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "poolId_",
              "type": "uint8"
            },
            {
              "internalType": "contract IUniswapV2Pair",
              "name": "lpPair_",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "govTokenReservePosition_",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "lpMultiplier_",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "singleStakingMultiplier_",
              "type": "uint8"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "adjustedPitValue",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IGovernanceToken",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govTokenReserve",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lpPair",
          "outputs": [
            {
              "internalType": "contract IUniswapV2Pair",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "masterBreeder",
          "outputs": [
            {
              "internalType": "contract IMasterBreeder",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pit",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pitRatio",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b50604051620013ad380380620013ad83398181016040526101408110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b506040908152602082810151918301516060840151608085015160a086015160c087015160e0880151610100909801518c51979a5094985092969195909492939192620001ec916000918d0190620002d2565b508851620002029060019060208c0190620002d2565b5060028054600580546001600160a01b03199081166001600160a01b039b8c1617909155600380548216998b16999099179098556004805490981695891695909517909655601260ff1990941693909317600160281b600160c81b0319166501000000000097909616969096029490941761ff00191661010060ff938416021760ff60201b1916640100000000948316949094029390931762ff0000191662010000948216949094029390931763ff000000191663010000009290931691909102919091179055506200036e9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031557805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034557825182559160200191906001019062000328565b506200035392915062000357565b5090565b5b8082111562000353576000815560010162000358565b61102f806200037e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636837f4ca11610097578063a9059cbb11610066578063a9059cbb146101b3578063dd62ed3e146102eb578063e88a988614610326578063f03c7c6e1461032e57610100565b80636837f4ca146102a057806370a08231146102a857806382291b76146102db57806395d89b41146102e357610100565b806323b872dd116100d357806323b872dd1461021a578063313ce5671461025d5780633b315fde1461027b578063452ed4f11461029857610100565b806305268cff1461010557806306fdde0314610136578063095ea7b3146101b357806318160ddd14610200575b600080fd5b61010d610336565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013e61035b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610178578181015183820152602001610160565b50505050905090810190601f1680156101a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ec600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610410565b604080519115158252519081900360200190f35b610208610419565b60408051918252519081900360200190f35b6101ec6004803603606081101561023057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106a5565b6102656106ae565b6040805160ff9092168252519081900360200190f35b6102086004803603602081101561029157600080fd5b50356106b7565b61010d6106d7565b61010d6106f3565b610208600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070f565b610208610b4a565b61013e610c3e565b6102086004803603604081101561030157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610410565b610208610cbc565b61010d610e4d565b60025465010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b505050505090505b90565b60005b92915050565b600080610424610b4a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051600254604080517ffd3d27b800000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff169163fd3d27b891600480820192602092909190829003018186803b15801561053557600080fd5b505afa158015610549573d6000803e3d6000fd5b505050506040513d602081101561055f57600080fd5b5051600254604080517f3a1aae3500000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff1691633a1aae3591600480820192602092909190829003018186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d602081101561060457600080fd5b505190506000841561062a5760025461062790869062010000900460ff16610e69565b90505b831561065e5760025461065b90610654906301000000900460ff1661064e876106b7565b90610e69565b8290610ee3565b90505b81156106805761067d6106546064610677856021610e69565b90610f57565b90505b821561069c576106996106546064610677866019610e69565b90505b94505050505090565b60009392505050565b60025460ff1690565b6000610413670de0b6b3a76400006106776106d0610cbc565b8590610e69565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000808061071b610b4a565b600354600254604080517f93f1a40b00000000000000000000000000000000000000000000000000000000815261010090920460ff16600483015273ffffffffffffffffffffffffffffffffffffffff888116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60408110156107ca57600080fd5b505160048054604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193945060009373ffffffffffffffffffffffffffffffffffffffff909216926318160ddd928282019260209290829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b50519050600061087d826106778564e8d4a51000610e69565b9050600061089464e8d4a510006106778785610e69565b6002549091506108ae90829062010000900460ff16610e69565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152915193995060009391909216916370a08231916024808301926020929190829003018186803b15801561092757600080fd5b505afa15801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b5051905080156109835760025461098090610979906301000000900460ff1661064e846106b7565b8890610ee3565b96505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b58b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b505190508015610a5f57610a5c610a556064610677846021610e69565b8990610ee3565b97505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6020811015610b1457600080fd5b505190508015610b3b57610b38610b316064610677846019610e69565b8a90610ee3565b98505b50969998505050505050505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d6060811015610be157600080fd5b5080516020909101516002546dffffffffffffffffffffffffffff928316945091169150600090640100000000900460ff16610c1e575081610c37565b600254640100000000900460ff1660011415610c375750805b9250505090565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051600254600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905193945060009365010000000000909304909116916370a0823191602480820192602092909190829003018186803b158015610dd957600080fd5b505afa158015610ded573d6000803e3d6000fd5b505050506040513d6020811015610e0357600080fd5b505190508115801590610e165750600081115b15610e3a57610e318261067783670de0b6b3a7640000610e69565b9250505061040d565b610c376001670de0b6b3a7640000610e69565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600082610e7857506000610413565b82820282848281610e8557fe5b0414610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fd96021913960400191505060405180910390fd5b9392505050565b600082820183811015610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610fc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610fd057fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db1a921b6d9ff5e41d8d8f87cb1a06a5949fb36d4277814f9f30d4b810f5b46664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13AD CODESIZE SUB DUP1 PUSH3 0x13AD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH2 0x140 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xE0 DUP9 ADD MLOAD PUSH2 0x100 SWAP1 SWAP9 ADD MLOAD DUP13 MLOAD SWAP8 SWAP11 POP SWAP5 SWAP9 POP SWAP3 SWAP7 SWAP2 SWAP6 SWAP1 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 PUSH3 0x1EC SWAP2 PUSH1 0x0 SWAP2 DUP14 ADD SWAP1 PUSH3 0x2D2 JUMP JUMPDEST POP DUP9 MLOAD PUSH3 0x202 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP13 ADD SWAP1 PUSH3 0x2D2 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP12 DUP13 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD DUP3 AND SWAP10 DUP12 AND SWAP10 SWAP1 SWAP10 OR SWAP1 SWAP9 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 SWAP9 AND SWAP6 DUP10 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP7 SSTORE PUSH1 0x12 PUSH1 0xFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH1 0x1 PUSH1 0x28 SHL PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 SWAP8 SWAP1 SWAP7 AND SWAP7 SWAP1 SWAP7 MUL SWAP5 SWAP1 SWAP5 OR PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP4 DUP5 AND MUL OR PUSH1 0xFF PUSH1 0x20 SHL NOT AND PUSH5 0x100000000 SWAP5 DUP4 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH4 0xFF000000 NOT AND PUSH4 0x1000000 SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x36E SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x315 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x345 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x345 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x345 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x328 JUMP JUMPDEST POP PUSH3 0x353 SWAP3 SWAP2 POP PUSH3 0x357 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x353 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x358 JUMP JUMPDEST PUSH2 0x102F DUP1 PUSH3 0x37E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6837F4CA GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xE88A9886 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0xF03C7C6E EQ PUSH2 0x32E JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6837F4CA EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x82291B76 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2E3 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x3B315FDE EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x452ED4F1 EQ PUSH2 0x298 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x5268CFF EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x200 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x178 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x160 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x410 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH2 0x419 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x6AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x70F JUMP JUMPDEST PUSH2 0x208 PUSH2 0xB4A JUMP JUMPDEST PUSH2 0x13E PUSH2 0xC3E JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x410 JUMP JUMPDEST PUSH2 0x208 PUSH2 0xCBC JUMP JUMPDEST PUSH2 0x10D PUSH2 0xE4D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x405 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3DA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x405 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x424 PUSH2 0xB4A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFD3D27B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH6 0x10000000000 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFD3D27B8 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x3A1AAE3500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH6 0x10000000000 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x3A1AAE35 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP5 ISZERO PUSH2 0x62A JUMPI PUSH1 0x2 SLOAD PUSH2 0x627 SWAP1 DUP7 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP4 ISZERO PUSH2 0x65E JUMPI PUSH1 0x2 SLOAD PUSH2 0x65B SWAP1 PUSH2 0x654 SWAP1 PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64E DUP8 PUSH2 0x6B7 JUMP JUMPDEST SWAP1 PUSH2 0xE69 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 ISZERO PUSH2 0x680 JUMPI PUSH2 0x67D PUSH2 0x654 PUSH1 0x64 PUSH2 0x677 DUP6 PUSH1 0x21 PUSH2 0xE69 JUMP JUMPDEST SWAP1 PUSH2 0xF57 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP3 ISZERO PUSH2 0x69C JUMPI PUSH2 0x699 PUSH2 0x654 PUSH1 0x64 PUSH2 0x677 DUP7 PUSH1 0x19 PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413 PUSH8 0xDE0B6B3A7640000 PUSH2 0x677 PUSH2 0x6D0 PUSH2 0xCBC JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x71B PUSH2 0xB4A JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x93F1A40B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0xFF AND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 SWAP4 AND SWAP3 PUSH4 0x93F1A40B SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x18160DDD SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x87D DUP3 PUSH2 0x677 DUP6 PUSH5 0xE8D4A51000 PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x894 PUSH5 0xE8D4A51000 PUSH2 0x677 DUP8 DUP6 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x8AE SWAP1 DUP3 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP4 SWAP10 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x983 JUMPI PUSH1 0x2 SLOAD PUSH2 0x980 SWAP1 PUSH2 0x979 SWAP1 PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64E DUP5 PUSH2 0x6B7 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5A46D3B5 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5C PUSH2 0xA55 PUSH1 0x64 PUSH2 0x677 DUP5 PUSH1 0x21 PUSH2 0xE69 JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP8 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0xB3B JUMPI PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x64 PUSH2 0x677 DUP5 PUSH1 0x19 PUSH2 0xE69 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP9 POP JUMPDEST POP SWAP7 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x2 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP2 POP PUSH1 0x0 SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC1E JUMPI POP DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0xC37 JUMPI POP DUP1 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x405 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3DA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH6 0x10000000000 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xE16 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xE3A JUMPI PUSH2 0xE31 DUP3 PUSH2 0x677 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x40D JUMP JUMPDEST PUSH2 0xC37 PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE78 JUMPI POP PUSH1 0x0 PUSH2 0x413 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xE85 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xEDC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFD9 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xFC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xFD0 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xDB BYTE SWAP3 SHL PUSH14 0x9FF5E41D8D8F87CB1A06A5949FB3 PUSH14 0x4277814F9F30D4B810F5B4666473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "320:4870:13:-:0;;;726:642;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:13;;726:642;;-1:-1:-1;726:642:13;;-1:-1:-1;726:642:13;;;;;;;;;;1035:13;;:5;;:13;;;;:::i;:::-;-1:-1:-1;1054:17:13;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;1077:9:13;:14;;1097:8;1123:10;;-1:-1:-1;;;;;;1123:10:13;;;-1:-1:-1;;;;;1123:10:13;;;;;;;1139:13;:30;;;;;;;;;;;;;;1198:6;:16;;;;;;;;;;;;;;;1089:2;-1:-1:-1;;1077:14:13;;;;;;;-1:-1:-1;;;;;;;;1097:20:13;;;;;;;;;;;;;;-1:-1:-1;;1175:17:13;1077:14;;1175:17;;;;;-1:-1:-1;;;;1220:51:13;;;;;;;;;;;;;-1:-1:-1;;1277:29:13;;;;;;;;;;;;;-1:-1:-1;;1312:51:13;;;;;;;;;;;;;;;;-1:-1:-1;320:4870:13;;-1:-1:-1;320:4870:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;320:4870:13;;;-1:-1:-1;320:4870:13;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c80636837f4ca11610097578063a9059cbb11610066578063a9059cbb146101b3578063dd62ed3e146102eb578063e88a988614610326578063f03c7c6e1461032e57610100565b80636837f4ca146102a057806370a08231146102a857806382291b76146102db57806395d89b41146102e357610100565b806323b872dd116100d357806323b872dd1461021a578063313ce5671461025d5780633b315fde1461027b578063452ed4f11461029857610100565b806305268cff1461010557806306fdde0314610136578063095ea7b3146101b357806318160ddd14610200575b600080fd5b61010d610336565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013e61035b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610178578181015183820152602001610160565b50505050905090810190601f1680156101a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ec600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610410565b604080519115158252519081900360200190f35b610208610419565b60408051918252519081900360200190f35b6101ec6004803603606081101561023057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106a5565b6102656106ae565b6040805160ff9092168252519081900360200190f35b6102086004803603602081101561029157600080fd5b50356106b7565b61010d6106d7565b61010d6106f3565b610208600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070f565b610208610b4a565b61013e610c3e565b6102086004803603604081101561030157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610410565b610208610cbc565b61010d610e4d565b60025465010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b505050505090505b90565b60005b92915050565b600080610424610b4a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051600254604080517ffd3d27b800000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff169163fd3d27b891600480820192602092909190829003018186803b15801561053557600080fd5b505afa158015610549573d6000803e3d6000fd5b505050506040513d602081101561055f57600080fd5b5051600254604080517f3a1aae3500000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff1691633a1aae3591600480820192602092909190829003018186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d602081101561060457600080fd5b505190506000841561062a5760025461062790869062010000900460ff16610e69565b90505b831561065e5760025461065b90610654906301000000900460ff1661064e876106b7565b90610e69565b8290610ee3565b90505b81156106805761067d6106546064610677856021610e69565b90610f57565b90505b821561069c576106996106546064610677866019610e69565b90505b94505050505090565b60009392505050565b60025460ff1690565b6000610413670de0b6b3a76400006106776106d0610cbc565b8590610e69565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000808061071b610b4a565b600354600254604080517f93f1a40b00000000000000000000000000000000000000000000000000000000815261010090920460ff16600483015273ffffffffffffffffffffffffffffffffffffffff888116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60408110156107ca57600080fd5b505160048054604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193945060009373ffffffffffffffffffffffffffffffffffffffff909216926318160ddd928282019260209290829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b50519050600061087d826106778564e8d4a51000610e69565b9050600061089464e8d4a510006106778785610e69565b6002549091506108ae90829062010000900460ff16610e69565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152915193995060009391909216916370a08231916024808301926020929190829003018186803b15801561092757600080fd5b505afa15801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b5051905080156109835760025461098090610979906301000000900460ff1661064e846106b7565b8890610ee3565b96505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b58b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b505190508015610a5f57610a5c610a556064610677846021610e69565b8990610ee3565b97505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6020811015610b1457600080fd5b505190508015610b3b57610b38610b316064610677846019610e69565b8a90610ee3565b98505b50969998505050505050505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d6060811015610be157600080fd5b5080516020909101516002546dffffffffffffffffffffffffffff928316945091169150600090640100000000900460ff16610c1e575081610c37565b600254640100000000900460ff1660011415610c375750805b9250505090565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051600254600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905193945060009365010000000000909304909116916370a0823191602480820192602092909190829003018186803b158015610dd957600080fd5b505afa158015610ded573d6000803e3d6000fd5b505050506040513d6020811015610e0357600080fd5b505190508115801590610e165750600081115b15610e3a57610e318261067783670de0b6b3a7640000610e69565b9250505061040d565b610c376001670de0b6b3a7640000610e69565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600082610e7857506000610413565b82820282848281610e8557fe5b0414610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fd96021913960400191505060405180910390fd5b9392505050565b600082820183811015610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610fc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610fd057fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db1a921b6d9ff5e41d8d8f87cb1a06a5949fb36d4277814f9f30d4b810f5b46664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6837F4CA GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xE88A9886 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0xF03C7C6E EQ PUSH2 0x32E JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6837F4CA EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x82291B76 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2E3 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x3B315FDE EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x452ED4F1 EQ PUSH2 0x298 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x5268CFF EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x200 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x178 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x160 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x410 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH2 0x419 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x6AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x70F JUMP JUMPDEST PUSH2 0x208 PUSH2 0xB4A JUMP JUMPDEST PUSH2 0x13E PUSH2 0xC3E JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x410 JUMP JUMPDEST PUSH2 0x208 PUSH2 0xCBC JUMP JUMPDEST PUSH2 0x10D PUSH2 0xE4D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x405 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3DA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x405 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x424 PUSH2 0xB4A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFD3D27B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH6 0x10000000000 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFD3D27B8 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x3A1AAE3500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH6 0x10000000000 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x3A1AAE35 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP5 ISZERO PUSH2 0x62A JUMPI PUSH1 0x2 SLOAD PUSH2 0x627 SWAP1 DUP7 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP4 ISZERO PUSH2 0x65E JUMPI PUSH1 0x2 SLOAD PUSH2 0x65B SWAP1 PUSH2 0x654 SWAP1 PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64E DUP8 PUSH2 0x6B7 JUMP JUMPDEST SWAP1 PUSH2 0xE69 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 ISZERO PUSH2 0x680 JUMPI PUSH2 0x67D PUSH2 0x654 PUSH1 0x64 PUSH2 0x677 DUP6 PUSH1 0x21 PUSH2 0xE69 JUMP JUMPDEST SWAP1 PUSH2 0xF57 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP3 ISZERO PUSH2 0x69C JUMPI PUSH2 0x699 PUSH2 0x654 PUSH1 0x64 PUSH2 0x677 DUP7 PUSH1 0x19 PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413 PUSH8 0xDE0B6B3A7640000 PUSH2 0x677 PUSH2 0x6D0 PUSH2 0xCBC JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x71B PUSH2 0xB4A JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x93F1A40B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0xFF AND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE DUP2 MLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 SWAP4 AND SWAP3 PUSH4 0x93F1A40B SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x18160DDD SWAP3 DUP3 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x87D DUP3 PUSH2 0x677 DUP6 PUSH5 0xE8D4A51000 PUSH2 0xE69 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x894 PUSH5 0xE8D4A51000 PUSH2 0x677 DUP8 DUP6 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x8AE SWAP1 DUP3 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP4 SWAP10 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x983 JUMPI PUSH1 0x2 SLOAD PUSH2 0x980 SWAP1 PUSH2 0x979 SWAP1 PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64E DUP5 PUSH2 0x6B7 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5A46D3B5 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5C PUSH2 0xA55 PUSH1 0x64 PUSH2 0x677 DUP5 PUSH1 0x21 PUSH2 0xE69 JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP8 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO PUSH2 0xB3B JUMPI PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x64 PUSH2 0x677 DUP5 PUSH1 0x19 PUSH2 0xE69 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST SWAP9 POP JUMPDEST POP SWAP7 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x2 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP2 POP PUSH1 0x0 SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC1E JUMPI POP DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0xC37 JUMPI POP DUP1 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x405 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3DA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH6 0x10000000000 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xE16 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xE3A JUMPI PUSH2 0xE31 DUP3 PUSH2 0x677 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x40D JUMP JUMPDEST PUSH2 0xC37 PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE78 JUMPI POP PUSH1 0x0 PUSH2 0x413 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xE85 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xEDC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFD9 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xFC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xFD0 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xDB BYTE SWAP3 SHL PUSH14 0x9FF5E41D8D8F87CB1A06A5949FB3 PUSH14 0x4277814F9F30D4B810F5B4666473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "320:4870:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1372:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:79;;;;;;;;;;;;;;;;-1:-1:-1;1809:79:13;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2818:1183;;;:::i;:::-;;;;;;;;;;;;;;;;1891:93;;;;;;;;;;;;;;;;-1:-1:-1;1891:93:13;;;;;;;;;;;;;;;;;;:::i;1554:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2690:124;;;;;;;;;;;;;;;;-1:-1:-1;2690:124:13;;:::i;672:28::-;;;:::i;633:35::-;;;:::i;4005:1183::-;;;;;;;;;;;;;;;;-1:-1:-1;4005:1183:13;;;;:::i;1988:358::-;;;:::i;1461:89::-;;;:::i;1643:80::-;;;;;;;;;;;;;;;;-1:-1:-1;1643:80:13;;;;;;;;;;;:::i;2350:336::-;;;:::i;704:17::-;;;:::i;597:32::-;;;;;;;;;:::o;1372:85::-;1447:5;1440:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:13;;1440:12;;1447:5;;1440:12;;1447:5;1440:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1372:85;;:::o;1809:79::-;1865:4;1809:79;;;;;:::o;2818:1183::-;2862:7;2877:30;2910:17;:15;:17::i;:::-;2877:50;;2933:22;2958:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2958:17:13;3005:8;;:25;;;;;;;;2958:17;;-1:-1:-1;2981:21:13;;3005:8;;;;;;;:23;;:25;;;;;2958:17;;3005:25;;;;;;;;:8;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3005:25:13;3058:8;;:20;;;;;;;;3005:25;;-1:-1:-1;3036:19:13;;3058:8;;;;;;;:18;;:20;;;;;3005:25;;3058:20;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3058:20:13;;-1:-1:-1;3085:29:13;3221:26;;3217:112;;3308:13;;3281:41;;:22;;3308:13;;;;;3281:26;:41::i;:::-;3257:65;;3217:112;3434:18;;3430:168;;3558:24;;3486:105;;3521:62;;3558:24;;;;;3521:32;3538:14;3521:16;:32::i;:::-;:36;;:62::i;:::-;3486:21;;:25;:105::i;:::-;3462:129;;3430:168;3666:15;;3662:115;;3715:55;3741:28;3765:3;3741:19;:11;3757:2;3741:15;:19::i;:::-;:23;;:28::i;3715:55::-;3691:79;;3662:115;3847:17;;3843:119;;3898:57;3924:30;3950:3;3924:21;:13;3942:2;3924:17;:21::i;3898:57::-;3874:81;;3843:119;3975:21;-1:-1:-1;;;;;2818:1183:13;:::o;1891:93::-;1961:4;1891:93;;;;;:::o;1554:85::-;1625:9;;;;1554:85;:::o;2690:124::-;2752:7;2774:35;2800:8;2774:21;2784:10;:8;:10::i;:::-;2774:5;;:9;:21::i;672:28::-;;;;;;:::o;633:35::-;;;;;;:::o;4005:1183::-;4060:7;;;4142:17;:15;:17::i;:::-;4204:13;;4227:7;;4204:38;;;;;;:13;4227:7;;;;;4204:38;;;;:13;:38;;;;;;;;;4109:50;;-1:-1:-1;;;4204:13:13;;;:22;;:38;;;;;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4204:38:13;4268:6;;;4204:38;4268:20;;;;;;;4204:38;;-1:-1:-1;4248:17:13;;4268:6;;;;;:18;;:20;;;;4204:38;;4268:20;;;;;;:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4268:20:13;;-1:-1:-1;4338:17:13;4358:48;4268:20;4358:33;:23;4386:4;4358:27;:33::i;:48::-;4338:68;-1:-1:-1;4412:22:13;4437:47;4479:4;4437:37;:22;4338:68;4437:26;:37::i;:47::-;4523:13;;4412:72;;-1:-1:-1;4504:33:13;;4412:72;;4523:13;;;;;4504:18;:33::i;:::-;4604:3;;:20;;;;;;:3;:20;;;;;;;;;4490:47;;-1:-1:-1;4583:18:13;;4604:3;;;;;:13;;:20;;;;;;;;;;;;;;:3;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4604:20:13;;-1:-1:-1;4634:14:13;;4630:140;;4730:24;;4672:91;;4697:58;;4730:24;;;;;4697:28;4714:10;4697:16;:28::i;:58::-;4672:11;;:15;:91::i;:::-;4658:105;;4630:140;4806:21;4830:8;;;;;;;;;;;:15;;;4846:5;4830:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4830:22:13;;-1:-1:-1;4862:17:13;;4858:99;;4903:47;4919:30;4945:3;4919:21;:13;4937:2;4919:17;:21::i;:30::-;4903:11;;:15;:47::i;:::-;4889:61;;4858:99;4995:23;5021:8;;;;;;;;;;;:18;;;5040:5;5021:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5021:25:13;;-1:-1:-1;5056:19:13;;5052:103;;5099:49;5115:32;5143:3;5115:23;:15;5135:2;5115:19;:23::i;:32::-;5099:11;;:15;:49::i;:::-;5085:63;;5052:103;-1:-1:-1;5172:11:13;;4005:1183;-1:-1:-1;;;;;;;;;4005:1183:13:o;1988:358::-;2036:7;2052:16;2070;2091:6;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2091:20:13;;;;;;;2156:24;;2051:60;;;;;-1:-1:-1;2051:60:13;;;-1:-1:-1;2117:24:13;;2156;;;;;2152:160;;-1:-1:-1;2214:8:13;2152:160;;;2239:24;;;;;;;2267:1;2239:29;2235:77;;;-1:-1:-1;2297:8:13;2235:77;2325:16;-1:-1:-1;;;1988:358:13;:::o;1461:89::-;1538:7;1531:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1508:13;;1531:14;;1538:7;;1531:14;;1538:7;1531:14;;;;;;;;;;;;;;;;;;;;;;;;2350:336;2391:7;2406:22;2431:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2431:17:13;2483:8;;;2510:3;2483:32;;;;;;:8;2510:3;;;2483:32;;;;;;2431:17;;-1:-1:-1;;;2483:8:13;;;;;;;;:18;;:32;;;;;2431:17;;2483:32;;;;;;;;:8;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2483:32:13;;-1:-1:-1;2525:18:13;;;;;:44;;;2568:1;2547:18;:22;2525:44;2521:124;;;2586:52;2623:14;2586:32;:18;2609:8;2586:22;:32::i;:52::-;2579:59;;;;;;2521:124;2657:24;2665:1;2672:8;2657:14;:24::i;704:17::-;;;;;;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;3538:215;-1:-1:-1;;;3538:215:1:o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IGovernanceToken\",\"name\":\"govToken_\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"pit_\",\"type\":\"address\"},{\"internalType\":\"contract IMasterBreeder\",\"name\":\"masterBreeder_\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"poolId_\",\"type\":\"uint8\"},{\"internalType\":\"contract IUniswapV2Pair\",\"name\":\"lpPair_\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"govTokenReservePosition_\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"lpMultiplier_\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"singleStakingMultiplier_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"adjustedPitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govToken\",\"outputs\":[{\"internalType\":\"contract IGovernanceToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govTokenReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpPair\",\"outputs\":[{\"internalType\":\"contract IUniswapV2Pair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterBreeder\",\"outputs\":[{\"internalType\":\"contract IMasterBreeder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pit\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pitRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GovernanceVote.sol\":\"GovernanceVote\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"contracts/GovernanceVote.sol\":{\"keccak256\":\"0xe6f00bf22dee272244c05a33217702d2e10dbb81b9d54a50ebe349cd50359828\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3788544cb44ff7da7491ea6ad0480ba22adcc04bb00e92b1d24233f7df37507\",\"dweb:/ipfs/QmSFhds9aSsW9EpbQKxp7ZtDmByHNk8YyBHV7LpCCoPqsf\"]},\"contracts/interfaces/IGovernanceToken.sol\":{\"keccak256\":\"0x3e8f65013c18a82be3dceeb287e071d4b59bc693c10b480539c6de207a8bf4cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88beb29d1a4501032a7738ea5b15500b2e85a32988159c253d78cf67e6b577fa\",\"dweb:/ipfs/Qma8mXphd6dH6ZTvoeZi4q2XkbiV1jxtMTezL17QntzzC4\"]},\"contracts/interfaces/IMasterBreeder.sol\":{\"keccak256\":\"0xde257908beae94f45da336106a2b605b916dde1c892472a4ca0ffbe46f8d1d10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78f5f343728f5b6c9059644c326788a884c96f38be3f03d7b684cbe0c33aca88\",\"dweb:/ipfs/QmTxwmXEnGbgKVAnwPqcg8jd2cXZscEDu9VhWsCGk5Uww2\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x3368b1700fc4a77b780967cdd03c731da787a99f054f69f4b404d3cd3691712d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://47521585cb5e7f2a8a1586b7d4f09e5ffc80929af8f9ed18012a1b4a82920b9f\",\"dweb:/ipfs/QmdHmVCdnyDq9GFDuRKXe69ATcY4ABXehHzoKRnzxtWNFv\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            },
            {
              "internalType": "contract IGovernanceToken",
              "name": "govToken_",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "pit_",
              "type": "address"
            },
            {
              "internalType": "contract IMasterBreeder",
              "name": "masterBreeder_",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "poolId_",
              "type": "uint8"
            },
            {
              "internalType": "contract IUniswapV2Pair",
              "name": "lpPair_",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "govTokenReservePosition_",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "lpMultiplier_",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "singleStakingMultiplier_",
              "type": "uint8"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "adjustedPitValue",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IGovernanceToken",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govTokenReserve",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lpPair",
          "outputs": [
            {
              "internalType": "contract IUniswapV2Pair",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "masterBreeder",
          "outputs": [
            {
              "internalType": "contract IMasterBreeder",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pit",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pitRatio",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "bytecode": "60806040523480156200001157600080fd5b50604051620013ad380380620013ad83398181016040526101408110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b506040908152602082810151918301516060840151608085015160a086015160c087015160e0880151610100909801518c51979a5094985092969195909492939192620001ec916000918d0190620002d2565b508851620002029060019060208c0190620002d2565b5060028054600580546001600160a01b03199081166001600160a01b039b8c1617909155600380548216998b16999099179098556004805490981695891695909517909655601260ff1990941693909317600160281b600160c81b0319166501000000000097909616969096029490941761ff00191661010060ff938416021760ff60201b1916640100000000948316949094029390931762ff0000191662010000948216949094029390931763ff000000191663010000009290931691909102919091179055506200036e9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031557805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034557825182559160200191906001019062000328565b506200035392915062000357565b5090565b5b8082111562000353576000815560010162000358565b61102f806200037e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636837f4ca11610097578063a9059cbb11610066578063a9059cbb146101b3578063dd62ed3e146102eb578063e88a988614610326578063f03c7c6e1461032e57610100565b80636837f4ca146102a057806370a08231146102a857806382291b76146102db57806395d89b41146102e357610100565b806323b872dd116100d357806323b872dd1461021a578063313ce5671461025d5780633b315fde1461027b578063452ed4f11461029857610100565b806305268cff1461010557806306fdde0314610136578063095ea7b3146101b357806318160ddd14610200575b600080fd5b61010d610336565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013e61035b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610178578181015183820152602001610160565b50505050905090810190601f1680156101a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ec600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610410565b604080519115158252519081900360200190f35b610208610419565b60408051918252519081900360200190f35b6101ec6004803603606081101561023057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106a5565b6102656106ae565b6040805160ff9092168252519081900360200190f35b6102086004803603602081101561029157600080fd5b50356106b7565b61010d6106d7565b61010d6106f3565b610208600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070f565b610208610b4a565b61013e610c3e565b6102086004803603604081101561030157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610410565b610208610cbc565b61010d610e4d565b60025465010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b505050505090505b90565b60005b92915050565b600080610424610b4a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051600254604080517ffd3d27b800000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff169163fd3d27b891600480820192602092909190829003018186803b15801561053557600080fd5b505afa158015610549573d6000803e3d6000fd5b505050506040513d602081101561055f57600080fd5b5051600254604080517f3a1aae3500000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff1691633a1aae3591600480820192602092909190829003018186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d602081101561060457600080fd5b505190506000841561062a5760025461062790869062010000900460ff16610e69565b90505b831561065e5760025461065b90610654906301000000900460ff1661064e876106b7565b90610e69565b8290610ee3565b90505b81156106805761067d6106546064610677856021610e69565b90610f57565b90505b821561069c576106996106546064610677866019610e69565b90505b94505050505090565b60009392505050565b60025460ff1690565b6000610413670de0b6b3a76400006106776106d0610cbc565b8590610e69565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000808061071b610b4a565b600354600254604080517f93f1a40b00000000000000000000000000000000000000000000000000000000815261010090920460ff16600483015273ffffffffffffffffffffffffffffffffffffffff888116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60408110156107ca57600080fd5b505160048054604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193945060009373ffffffffffffffffffffffffffffffffffffffff909216926318160ddd928282019260209290829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b50519050600061087d826106778564e8d4a51000610e69565b9050600061089464e8d4a510006106778785610e69565b6002549091506108ae90829062010000900460ff16610e69565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152915193995060009391909216916370a08231916024808301926020929190829003018186803b15801561092757600080fd5b505afa15801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b5051905080156109835760025461098090610979906301000000900460ff1661064e846106b7565b8890610ee3565b96505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b58b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b505190508015610a5f57610a5c610a556064610677846021610e69565b8990610ee3565b97505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6020811015610b1457600080fd5b505190508015610b3b57610b38610b316064610677846019610e69565b8a90610ee3565b98505b50969998505050505050505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d6060811015610be157600080fd5b5080516020909101516002546dffffffffffffffffffffffffffff928316945091169150600090640100000000900460ff16610c1e575081610c37565b600254640100000000900460ff1660011415610c375750805b9250505090565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051600254600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905193945060009365010000000000909304909116916370a0823191602480820192602092909190829003018186803b158015610dd957600080fd5b505afa158015610ded573d6000803e3d6000fd5b505050506040513d6020811015610e0357600080fd5b505190508115801590610e165750600081115b15610e3a57610e318261067783670de0b6b3a7640000610e69565b9250505061040d565b610c376001670de0b6b3a7640000610e69565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600082610e7857506000610413565b82820282848281610e8557fe5b0414610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fd96021913960400191505060405180910390fd5b9392505050565b600082820183811015610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610fc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610fd057fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db1a921b6d9ff5e41d8d8f87cb1a06a5949fb36d4277814f9f30d4b810f5b46664736f6c634300060c0033",
      "bin": "60806040523480156200001157600080fd5b50604051620013ad380380620013ad83398181016040526101408110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b506040908152602082810151918301516060840151608085015160a086015160c087015160e0880151610100909801518c51979a5094985092969195909492939192620001ec916000918d0190620002d2565b508851620002029060019060208c0190620002d2565b5060028054600580546001600160a01b03199081166001600160a01b039b8c1617909155600380548216998b16999099179098556004805490981695891695909517909655601260ff1990941693909317600160281b600160c81b0319166501000000000097909616969096029490941761ff00191661010060ff938416021760ff60201b1916640100000000948316949094029390931762ff0000191662010000948216949094029390931763ff000000191663010000009290931691909102919091179055506200036e9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031557805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034557825182559160200191906001019062000328565b506200035392915062000357565b5090565b5b8082111562000353576000815560010162000358565b61102f806200037e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636837f4ca11610097578063a9059cbb11610066578063a9059cbb146101b3578063dd62ed3e146102eb578063e88a988614610326578063f03c7c6e1461032e57610100565b80636837f4ca146102a057806370a08231146102a857806382291b76146102db57806395d89b41146102e357610100565b806323b872dd116100d357806323b872dd1461021a578063313ce5671461025d5780633b315fde1461027b578063452ed4f11461029857610100565b806305268cff1461010557806306fdde0314610136578063095ea7b3146101b357806318160ddd14610200575b600080fd5b61010d610336565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013e61035b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610178578181015183820152602001610160565b50505050905090810190601f1680156101a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ec600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610410565b604080519115158252519081900360200190f35b610208610419565b60408051918252519081900360200190f35b6101ec6004803603606081101561023057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106a5565b6102656106ae565b6040805160ff9092168252519081900360200190f35b6102086004803603602081101561029157600080fd5b50356106b7565b61010d6106d7565b61010d6106f3565b610208600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070f565b610208610b4a565b61013e610c3e565b6102086004803603604081101561030157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610410565b610208610cbc565b61010d610e4d565b60025465010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b505050505090505b90565b60005b92915050565b600080610424610b4a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051600254604080517ffd3d27b800000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff169163fd3d27b891600480820192602092909190829003018186803b15801561053557600080fd5b505afa158015610549573d6000803e3d6000fd5b505050506040513d602081101561055f57600080fd5b5051600254604080517f3a1aae3500000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff1691633a1aae3591600480820192602092909190829003018186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d602081101561060457600080fd5b505190506000841561062a5760025461062790869062010000900460ff16610e69565b90505b831561065e5760025461065b90610654906301000000900460ff1661064e876106b7565b90610e69565b8290610ee3565b90505b81156106805761067d6106546064610677856021610e69565b90610f57565b90505b821561069c576106996106546064610677866019610e69565b90505b94505050505090565b60009392505050565b60025460ff1690565b6000610413670de0b6b3a76400006106776106d0610cbc565b8590610e69565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000808061071b610b4a565b600354600254604080517f93f1a40b00000000000000000000000000000000000000000000000000000000815261010090920460ff16600483015273ffffffffffffffffffffffffffffffffffffffff888116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60408110156107ca57600080fd5b505160048054604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193945060009373ffffffffffffffffffffffffffffffffffffffff909216926318160ddd928282019260209290829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b50519050600061087d826106778564e8d4a51000610e69565b9050600061089464e8d4a510006106778785610e69565b6002549091506108ae90829062010000900460ff16610e69565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152915193995060009391909216916370a08231916024808301926020929190829003018186803b15801561092757600080fd5b505afa15801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b5051905080156109835760025461098090610979906301000000900460ff1661064e846106b7565b8890610ee3565b96505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b58b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b505190508015610a5f57610a5c610a556064610677846021610e69565b8990610ee3565b97505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6020811015610b1457600080fd5b505190508015610b3b57610b38610b316064610677846019610e69565b8a90610ee3565b98505b50969998505050505050505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d6060811015610be157600080fd5b5080516020909101516002546dffffffffffffffffffffffffffff928316945091169150600090640100000000900460ff16610c1e575081610c37565b600254640100000000900460ff1660011415610c375750805b9250505090565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051600254600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905193945060009365010000000000909304909116916370a0823191602480820192602092909190829003018186803b158015610dd957600080fd5b505afa158015610ded573d6000803e3d6000fd5b505050506040513d6020811015610e0357600080fd5b505190508115801590610e165750600081115b15610e3a57610e318261067783670de0b6b3a7640000610e69565b9250505061040d565b610c376001670de0b6b3a7640000610e69565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600082610e7857506000610413565b82820282848281610e8557fe5b0414610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fd96021913960400191505060405180910390fd5b9392505050565b600082820183811015610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610fc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610fd057fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db1a921b6d9ff5e41d8d8f87cb1a06a5949fb36d4277814f9f30d4b810f5b46664736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101005760003560e01c80636837f4ca11610097578063a9059cbb11610066578063a9059cbb146101b3578063dd62ed3e146102eb578063e88a988614610326578063f03c7c6e1461032e57610100565b80636837f4ca146102a057806370a08231146102a857806382291b76146102db57806395d89b41146102e357610100565b806323b872dd116100d357806323b872dd1461021a578063313ce5671461025d5780633b315fde1461027b578063452ed4f11461029857610100565b806305268cff1461010557806306fdde0314610136578063095ea7b3146101b357806318160ddd14610200575b600080fd5b61010d610336565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013e61035b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610178578181015183820152602001610160565b50505050905090810190601f1680156101a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ec600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610410565b604080519115158252519081900360200190f35b610208610419565b60408051918252519081900360200190f35b6101ec6004803603606081101561023057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106a5565b6102656106ae565b6040805160ff9092168252519081900360200190f35b6102086004803603602081101561029157600080fd5b50356106b7565b61010d6106d7565b61010d6106f3565b610208600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070f565b610208610b4a565b61013e610c3e565b6102086004803603604081101561030157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610410565b610208610cbc565b61010d610e4d565b60025465010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b505050505090505b90565b60005b92915050565b600080610424610b4a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051600254604080517ffd3d27b800000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff169163fd3d27b891600480820192602092909190829003018186803b15801561053557600080fd5b505afa158015610549573d6000803e3d6000fd5b505050506040513d602081101561055f57600080fd5b5051600254604080517f3a1aae3500000000000000000000000000000000000000000000000000000000815290519293506000926501000000000090920473ffffffffffffffffffffffffffffffffffffffff1691633a1aae3591600480820192602092909190829003018186803b1580156105da57600080fd5b505afa1580156105ee573d6000803e3d6000fd5b505050506040513d602081101561060457600080fd5b505190506000841561062a5760025461062790869062010000900460ff16610e69565b90505b831561065e5760025461065b90610654906301000000900460ff1661064e876106b7565b90610e69565b8290610ee3565b90505b81156106805761067d6106546064610677856021610e69565b90610f57565b90505b821561069c576106996106546064610677866019610e69565b90505b94505050505090565b60009392505050565b60025460ff1690565b6000610413670de0b6b3a76400006106776106d0610cbc565b8590610e69565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000808061071b610b4a565b600354600254604080517f93f1a40b00000000000000000000000000000000000000000000000000000000815261010090920460ff16600483015273ffffffffffffffffffffffffffffffffffffffff888116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60408110156107ca57600080fd5b505160048054604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193945060009373ffffffffffffffffffffffffffffffffffffffff909216926318160ddd928282019260209290829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b50519050600061087d826106778564e8d4a51000610e69565b9050600061089464e8d4a510006106778785610e69565b6002549091506108ae90829062010000900460ff16610e69565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152915193995060009391909216916370a08231916024808301926020929190829003018186803b15801561092757600080fd5b505afa15801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b5051905080156109835760025461098090610979906301000000900460ff1661064e846106b7565b8890610ee3565b96505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b58b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b505190508015610a5f57610a5c610a556064610677846021610e69565b8990610ee3565b97505b6000600260059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6020811015610b1457600080fd5b505190508015610b3b57610b38610b316064610677846019610e69565b8a90610ee3565b98505b50969998505050505050505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d6060811015610be157600080fd5b5080516020909101516002546dffffffffffffffffffffffffffff928316945091169150600090640100000000900460ff16610c1e575081610c37565b600254640100000000900460ff1660011415610c375750805b9250505090565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104055780601f106103da57610100808354040283529160200191610405565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051600254600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905193945060009365010000000000909304909116916370a0823191602480820192602092909190829003018186803b158015610dd957600080fd5b505afa158015610ded573d6000803e3d6000fd5b505050506040513d6020811015610e0357600080fd5b505190508115801590610e165750600081115b15610e3a57610e318261067783670de0b6b3a7640000610e69565b9250505061040d565b610c376001670de0b6b3a7640000610e69565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600082610e7857506000610413565b82820282848281610e8557fe5b0414610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fd96021913960400191505060405180910390fd5b9392505050565b600082820183811015610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610fc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610fd057fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db1a921b6d9ff5e41d8d8f87cb1a06a5949fb36d4277814f9f30d4b810f5b46664736f6c634300060c0033",
      "srcmap": "320:4870:13:-:0;;;726:642;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;726:642:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:13;;726:642;;-1:-1:-1;726:642:13;;-1:-1:-1;726:642:13;;;;;;;;;;1035:13;;:5;;:13;;;;:::i;:::-;-1:-1:-1;1054:17:13;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;1077:9:13;:14;;1097:8;1123:10;;-1:-1:-1;;;;;;1123:10:13;;;-1:-1:-1;;;;;1123:10:13;;;;;;;1139:13;:30;;;;;;;;;;;;;;1198:6;:16;;;;;;;;;;;;;;;1089:2;-1:-1:-1;;1077:14:13;;;;;;;-1:-1:-1;;;;;;;;1097:20:13;;;;;;;;;;;;;;-1:-1:-1;;1175:17:13;1077:14;;1175:17;;;;;-1:-1:-1;;;;1220:51:13;;;;;;;;;;;;;-1:-1:-1;;1277:29:13;;;;;;;;;;;;;-1:-1:-1;;1312:51:13;;;;;;;;;;;;;;;;-1:-1:-1;320:4870:13;;-1:-1:-1;320:4870:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;320:4870:13;;;-1:-1:-1;320:4870:13;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "320:4870:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1372:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:79;;;;;;;;;;;;;;;;-1:-1:-1;1809:79:13;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2818:1183;;;:::i;:::-;;;;;;;;;;;;;;;;1891:93;;;;;;;;;;;;;;;;-1:-1:-1;1891:93:13;;;;;;;;;;;;;;;;;;:::i;1554:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2690:124;;;;;;;;;;;;;;;;-1:-1:-1;2690:124:13;;:::i;672:28::-;;;:::i;633:35::-;;;:::i;4005:1183::-;;;;;;;;;;;;;;;;-1:-1:-1;4005:1183:13;;;;:::i;1988:358::-;;;:::i;1461:89::-;;;:::i;1643:80::-;;;;;;;;;;;;;;;;-1:-1:-1;1643:80:13;;;;;;;;;;;:::i;2350:336::-;;;:::i;704:17::-;;;:::i;597:32::-;;;;;;;;;:::o;1372:85::-;1447:5;1440:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:13;;1440:12;;1447:5;;1440:12;;1447:5;1440:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1372:85;;:::o;1809:79::-;1865:4;1809:79;;;;;:::o;2818:1183::-;2862:7;2877:30;2910:17;:15;:17::i;:::-;2877:50;;2933:22;2958:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2958:17:13;3005:8;;:25;;;;;;;;2958:17;;-1:-1:-1;2981:21:13;;3005:8;;;;;;;:23;;:25;;;;;2958:17;;3005:25;;;;;;;;:8;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3005:25:13;3058:8;;:20;;;;;;;;3005:25;;-1:-1:-1;3036:19:13;;3058:8;;;;;;;:18;;:20;;;;;3005:25;;3058:20;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3058:20:13;;-1:-1:-1;3085:29:13;3221:26;;3217:112;;3308:13;;3281:41;;:22;;3308:13;;;;;3281:26;:41::i;:::-;3257:65;;3217:112;3434:18;;3430:168;;3558:24;;3486:105;;3521:62;;3558:24;;;;;3521:32;3538:14;3521:16;:32::i;:::-;:36;;:62::i;:::-;3486:21;;:25;:105::i;:::-;3462:129;;3430:168;3666:15;;3662:115;;3715:55;3741:28;3765:3;3741:19;:11;3757:2;3741:15;:19::i;:::-;:23;;:28::i;3715:55::-;3691:79;;3662:115;3847:17;;3843:119;;3898:57;3924:30;3950:3;3924:21;:13;3942:2;3924:17;:21::i;3898:57::-;3874:81;;3843:119;3975:21;-1:-1:-1;;;;;2818:1183:13;:::o;1891:93::-;1961:4;1891:93;;;;;:::o;1554:85::-;1625:9;;;;1554:85;:::o;2690:124::-;2752:7;2774:35;2800:8;2774:21;2784:10;:8;:10::i;:::-;2774:5;;:9;:21::i;672:28::-;;;;;;:::o;633:35::-;;;;;;:::o;4005:1183::-;4060:7;;;4142:17;:15;:17::i;:::-;4204:13;;4227:7;;4204:38;;;;;;:13;4227:7;;;;;4204:38;;;;:13;:38;;;;;;;;;4109:50;;-1:-1:-1;;;4204:13:13;;;:22;;:38;;;;;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4204:38:13;4268:6;;;4204:38;4268:20;;;;;;;4204:38;;-1:-1:-1;4248:17:13;;4268:6;;;;;:18;;:20;;;;4204:38;;4268:20;;;;;;:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4268:20:13;;-1:-1:-1;4338:17:13;4358:48;4268:20;4358:33;:23;4386:4;4358:27;:33::i;:48::-;4338:68;-1:-1:-1;4412:22:13;4437:47;4479:4;4437:37;:22;4338:68;4437:26;:37::i;:47::-;4523:13;;4412:72;;-1:-1:-1;4504:33:13;;4412:72;;4523:13;;;;;4504:18;:33::i;:::-;4604:3;;:20;;;;;;:3;:20;;;;;;;;;4490:47;;-1:-1:-1;4583:18:13;;4604:3;;;;;:13;;:20;;;;;;;;;;;;;;:3;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4604:20:13;;-1:-1:-1;4634:14:13;;4630:140;;4730:24;;4672:91;;4697:58;;4730:24;;;;;4697:28;4714:10;4697:16;:28::i;:58::-;4672:11;;:15;:91::i;:::-;4658:105;;4630:140;4806:21;4830:8;;;;;;;;;;;:15;;;4846:5;4830:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4830:22:13;;-1:-1:-1;4862:17:13;;4858:99;;4903:47;4919:30;4945:3;4919:21;:13;4937:2;4919:17;:21::i;:30::-;4903:11;;:15;:47::i;:::-;4889:61;;4858:99;4995:23;5021:8;;;;;;;;;;;:18;;;5040:5;5021:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5021:25:13;;-1:-1:-1;5056:19:13;;5052:103;;5099:49;5115:32;5143:3;5115:23;:15;5135:2;5115:19;:23::i;:32::-;5099:11;;:15;:49::i;:::-;5085:63;;5052:103;-1:-1:-1;5172:11:13;;4005:1183;-1:-1:-1;;;;;;;;;4005:1183:13:o;1988:358::-;2036:7;2052:16;2070;2091:6;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2091:20:13;;;;;;;2156:24;;2051:60;;;;;-1:-1:-1;2051:60:13;;;-1:-1:-1;2117:24:13;;2156;;;;;2152:160;;-1:-1:-1;2214:8:13;2152:160;;;2239:24;;;;;;;2267:1;2239:29;2235:77;;;-1:-1:-1;2297:8:13;2235:77;2325:16;-1:-1:-1;;;1988:358:13;:::o;1461:89::-;1538:7;1531:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1508:13;;1531:14;;1538:7;;1531:14;;1538:7;1531:14;;;;;;;;;;;;;;;;;;;;;;;;2350:336;2391:7;2406:22;2431:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2431:17:13;2483:8;;;2510:3;2483:32;;;;;;:8;2510:3;;;2483:32;;;;;;2431:17;;-1:-1:-1;;;2483:8:13;;;;;;;;:18;;:32;;;;;2431:17;;2483:32;;;;;;;;:8;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2483:32:13;;-1:-1:-1;2525:18:13;;;;;:44;;;2568:1;2547:18;:22;2525:44;2521:124;;;2586:52;2623:14;2586:32;:18;2609:8;2586:22;:32::i;:52::-;2579:59;;;;;;2521:124;2657:24;2665:1;2672:8;2657:14;:24::i;704:17::-;;;;;;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;3538:215;-1:-1:-1;;;3538:215:1:o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o"
    },
    "contracts/MasterBank.sol:MasterBank": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "CC",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "MB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "DEV",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "BURNP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "MBP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "DEVP",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Bought",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "BuyGameTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_currency",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_dev",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_mb",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "burnpercentupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "devpupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "mbpupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051610d7e380380610d7e833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c0909601519495939492939192909190600061006a610119565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039889166001600160a01b031991821617909155600280549789169782169790971790965560038054958816958716959095179094556004805493909616929094169190911790935560059290925560065560075561011d565b3390565b610c528061012c6000396000f3fe6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063cb1d555a1161004e578063cb1d555a146101c6578063e79ffa11146101f0578063f2fde38b14610205576100bc565b80638da5cb5b14610172578063935db0a614610187578063ab7cc2db146101b1576100bc565b80634325dea0116100a55780634325dea01461012b57806361cfe85e14610140578063715018a61461015d576100bc565b8063144f2f94146100c1578063361b45a8146100ff575b600080fd5b3480156100cd57600080fd5b506100d6610245565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010b57600080fd5b506101296004803603602081101561012257600080fd5b5035610261565b005b34801561013757600080fd5b506100d661030e565b6101296004803603602081101561015657600080fd5b503561032a565b34801561016957600080fd5b5061012961066e565b34801561017e57600080fd5b506100d6610785565b34801561019357600080fd5b50610129600480360360208110156101aa57600080fd5b50356107a1565b3480156101bd57600080fd5b506100d661084e565b3480156101d257600080fd5b50610129600480360360208110156101e957600080fd5b503561086a565b3480156101fc57600080fd5b506100d6610917565b34801561021157600080fd5b506101296004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610933565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610269610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610287610785565b73ffffffffffffffffffffffffffffffffffffffff161461030957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600755565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b678ac7230489e800008110156103a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416d6f756e74206973206e6f742067726561746572207468616e203130000000604482015290519081900360640190fd5b60015460025460055473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906103e6906064906103e0908890610ad8565b90610b54565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b505060015460035460065473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906104c1906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b505060015460045460075473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92339291169061059c906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b50506040805182815290517f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef19181900360200190a150565b610676610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610694610785565b73ffffffffffffffffffffffffffffffffffffffff161461071657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107a9610ad4565b73ffffffffffffffffffffffffffffffffffffffff166107c7610785565b73ffffffffffffffffffffffffffffffffffffffff161461084957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600655565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610872610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610890610785565b73ffffffffffffffffffffffffffffffffffffffff161461091257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600555565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b61093b610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610959610785565b73ffffffffffffffffffffffffffffffffffffffff16146109db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610bd66026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082610ae757506000610b4e565b82820282848281610af457fe5b0414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610bfc6021913960400191505060405180910390fd5b90505b92915050565b6000808211610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bcd57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122022a00bf1bafd7a6036faa3398b5960b9ed4b5c6b7ce838fc92eea9d1688d755064736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD7E CODESIZE SUB DUP1 PUSH2 0xD7E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x0 PUSH2 0x6A PUSH2 0x119 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP8 DUP10 AND SWAP8 DUP3 AND SWAP8 SWAP1 SWAP8 OR SWAP1 SWAP7 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP6 DUP9 AND SWAP6 DUP8 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP4 SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x6 SSTORE PUSH1 0x7 SSTORE PUSH2 0x11D JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xC52 DUP1 PUSH2 0x12C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xCB1D555A GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xCB1D555A EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xE79FFA11 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x205 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x935DB0A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xAB7CC2DB EQ PUSH2 0x1B1 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x4325DEA0 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x4325DEA0 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x61CFE85E EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x15D JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x144F2F94 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x361B45A8 EQ PUSH2 0xFF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x245 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x261 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x32A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x66E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x84E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x933 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x269 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x287 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x309 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH8 0x8AC7230489E80000 DUP2 LT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206973206E6F742067726561746572207468616E203130000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x3E6 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x4C1 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x545 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x59C SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x620 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4E08BA899977CF7D4C2964BCE71C6B9A7EF76EE5166A4C1249A1E08016E33EF1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x676 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x694 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x716 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7A9 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C7 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x849 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x872 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x890 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x912 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x93B PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x959 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBD6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xAE7 JUMPI POP PUSH1 0x0 PUSH2 0xB4E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xAF4 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBFC PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xBC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xBCD JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A264697066735822122022 LOG0 SIGNEXTEND CALL 0xBA REVERT PUSH27 0x6036FAA3398B5960B9ED4B5C6B7CE838FC92EEA9D1688D75506473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "221:1359:14:-:0;;;458:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;458:269:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;580:9:14;:14;;-1:-1:-1;;;;;580:14:14;;;-1:-1:-1;;;;;;580:14:14;;;;;;;604:5;:12;;;;;;;;;;;;;;;626:3;:8;;;;;;;;;;;;;;;644:4;:10;;;;;;;;;;;;;;;;;664:6;:14;;;;688:4;:10;708:5;:12;221:1359;;598:104:6;685:10;598:104;:::o;221:1359:14:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063cb1d555a1161004e578063cb1d555a146101c6578063e79ffa11146101f0578063f2fde38b14610205576100bc565b80638da5cb5b14610172578063935db0a614610187578063ab7cc2db146101b1576100bc565b80634325dea0116100a55780634325dea01461012b57806361cfe85e14610140578063715018a61461015d576100bc565b8063144f2f94146100c1578063361b45a8146100ff575b600080fd5b3480156100cd57600080fd5b506100d6610245565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010b57600080fd5b506101296004803603602081101561012257600080fd5b5035610261565b005b34801561013757600080fd5b506100d661030e565b6101296004803603602081101561015657600080fd5b503561032a565b34801561016957600080fd5b5061012961066e565b34801561017e57600080fd5b506100d6610785565b34801561019357600080fd5b50610129600480360360208110156101aa57600080fd5b50356107a1565b3480156101bd57600080fd5b506100d661084e565b3480156101d257600080fd5b50610129600480360360208110156101e957600080fd5b503561086a565b3480156101fc57600080fd5b506100d6610917565b34801561021157600080fd5b506101296004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610933565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610269610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610287610785565b73ffffffffffffffffffffffffffffffffffffffff161461030957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600755565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b678ac7230489e800008110156103a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416d6f756e74206973206e6f742067726561746572207468616e203130000000604482015290519081900360640190fd5b60015460025460055473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906103e6906064906103e0908890610ad8565b90610b54565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b505060015460035460065473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906104c1906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b505060015460045460075473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92339291169061059c906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b50506040805182815290517f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef19181900360200190a150565b610676610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610694610785565b73ffffffffffffffffffffffffffffffffffffffff161461071657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107a9610ad4565b73ffffffffffffffffffffffffffffffffffffffff166107c7610785565b73ffffffffffffffffffffffffffffffffffffffff161461084957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600655565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610872610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610890610785565b73ffffffffffffffffffffffffffffffffffffffff161461091257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600555565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b61093b610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610959610785565b73ffffffffffffffffffffffffffffffffffffffff16146109db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610bd66026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082610ae757506000610b4e565b82820282848281610af457fe5b0414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610bfc6021913960400191505060405180910390fd5b90505b92915050565b6000808211610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bcd57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122022a00bf1bafd7a6036faa3398b5960b9ed4b5c6b7ce838fc92eea9d1688d755064736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xCB1D555A GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xCB1D555A EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xE79FFA11 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x205 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x935DB0A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xAB7CC2DB EQ PUSH2 0x1B1 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x4325DEA0 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x4325DEA0 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x61CFE85E EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x15D JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x144F2F94 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x361B45A8 EQ PUSH2 0xFF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x245 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x261 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x32A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x66E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x84E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x933 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x269 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x287 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x309 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH8 0x8AC7230489E80000 DUP2 LT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206973206E6F742067726561746572207468616E203130000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x3E6 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x4C1 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x545 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x4 SLOAD PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 PUSH4 0x23B872DD SWAP3 CALLER SWAP3 SWAP2 AND SWAP1 PUSH2 0x59C SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x3E0 SWAP1 DUP9 SWAP1 PUSH2 0xAD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x620 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4E08BA899977CF7D4C2964BCE71C6B9A7EF76EE5166A4C1249A1E08016E33EF1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x676 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x694 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x716 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7A9 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C7 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x849 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x872 PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x890 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x912 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x93B PUSH2 0xAD4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x959 PUSH2 0x785 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBD6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xAE7 JUMPI POP PUSH1 0x0 PUSH2 0xB4E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xAF4 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBFC PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xBC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xBCD JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A264697066735822122022 LOG0 SIGNEXTEND CALL 0xBA REVERT PUSH27 0x6036FAA3398B5960B9ED4B5C6B7CE838FC92EEA9D1688D75506473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "221:1359:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;322:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1425:88;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1425:88:14;;:::i;:::-;;291:24;;;;;;;;;;;;;:::i;768:457::-;;;;;;;;;;;;;;;;-1:-1:-1;768:457:14;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;1085:85::-;;;;;;;;;;;;;:::i;1333:86:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1333:86:14;;:::i;349:18::-;;;;;;;;;;;;;:::i;1231:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:96:14;;:::i;374:19::-;;;;;;;;;;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;322:20:14:-;;;;;;:::o;1425:88::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:5:14::1;:16:::0;1425:88::o;291:24::-;;;;;;:::o;768:457::-;850:20;840:6;:30;;832:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;921:9;;965:5;;984:6;;921:9;;;;;914:30;;945:10;;965:5;;;973:27;;996:3;;973:18;;:6;;:10;:18::i;:::-;:22;;:27::i;:::-;914:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1018:9:14;;1062:3;;1079:4;;1018:9;;;;;1011:30;;1042:10;;1062:3;;;1068:25;;1089:3;;1068:16;;:6;;:10;:16::i;:25::-;1011:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1111:9:14;;1155:4;;1173:5;;1111:9;;;;;1104:30;;1135:10;;1155:4;;;1162:26;;1184:3;;1162:17;;:6;;:10;:17::i;:26::-;1104:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1204:14:14;;;;;;;;;;;;;1104:85;1204:14;;;768:457;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;1333:86:14:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1397:4:14::1;:15:::0;1333:86::o;349:18::-;;;;;;:::o;1231:96::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1303:6:14::1;:17:::0;1231:96::o;374:19::-;;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"CC\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"BURN\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"MB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"DEV\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"BURNP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"MBP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEVP\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Bought\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BuyGameTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_burn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_currency\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_dev\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_mb\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlock\",\"type\":\"uint256\"}],\"name\":\"burnpercentupdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlock\",\"type\":\"uint256\"}],\"name\":\"devpupdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlock\",\"type\":\"uint256\"}],\"name\":\"mbpupdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MasterBank.sol\":\"MasterBank\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/MasterBank.sol\":{\"keccak256\":\"0x6fd971722c1721ff2291303a7b102bb106e1afdb7597faa45e4e8407de7dd643\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61e6938c777b4112161abc352d73df7daf113b36f7dafc2ce1c2cd956928c418\",\"dweb:/ipfs/Qmah2iyFcEEcymtiVxFagJjmfdn97K2jwHTPYCi44BH7Ch\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "CC",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "BURN",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "MB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "DEV",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "BURNP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "MBP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "DEVP",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Bought",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "BuyGameTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_burn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_currency",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_dev",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "_mb",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "burnpercentupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "devpupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "mbpupdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50604051610d7e380380610d7e833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c0909601519495939492939192909190600061006a610119565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039889166001600160a01b031991821617909155600280549789169782169790971790965560038054958816958716959095179094556004805493909616929094169190911790935560059290925560065560075561011d565b3390565b610c528061012c6000396000f3fe6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063cb1d555a1161004e578063cb1d555a146101c6578063e79ffa11146101f0578063f2fde38b14610205576100bc565b80638da5cb5b14610172578063935db0a614610187578063ab7cc2db146101b1576100bc565b80634325dea0116100a55780634325dea01461012b57806361cfe85e14610140578063715018a61461015d576100bc565b8063144f2f94146100c1578063361b45a8146100ff575b600080fd5b3480156100cd57600080fd5b506100d6610245565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010b57600080fd5b506101296004803603602081101561012257600080fd5b5035610261565b005b34801561013757600080fd5b506100d661030e565b6101296004803603602081101561015657600080fd5b503561032a565b34801561016957600080fd5b5061012961066e565b34801561017e57600080fd5b506100d6610785565b34801561019357600080fd5b50610129600480360360208110156101aa57600080fd5b50356107a1565b3480156101bd57600080fd5b506100d661084e565b3480156101d257600080fd5b50610129600480360360208110156101e957600080fd5b503561086a565b3480156101fc57600080fd5b506100d6610917565b34801561021157600080fd5b506101296004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610933565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610269610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610287610785565b73ffffffffffffffffffffffffffffffffffffffff161461030957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600755565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b678ac7230489e800008110156103a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416d6f756e74206973206e6f742067726561746572207468616e203130000000604482015290519081900360640190fd5b60015460025460055473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906103e6906064906103e0908890610ad8565b90610b54565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b505060015460035460065473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906104c1906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b505060015460045460075473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92339291169061059c906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b50506040805182815290517f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef19181900360200190a150565b610676610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610694610785565b73ffffffffffffffffffffffffffffffffffffffff161461071657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107a9610ad4565b73ffffffffffffffffffffffffffffffffffffffff166107c7610785565b73ffffffffffffffffffffffffffffffffffffffff161461084957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600655565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610872610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610890610785565b73ffffffffffffffffffffffffffffffffffffffff161461091257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600555565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b61093b610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610959610785565b73ffffffffffffffffffffffffffffffffffffffff16146109db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610bd66026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082610ae757506000610b4e565b82820282848281610af457fe5b0414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610bfc6021913960400191505060405180910390fd5b90505b92915050565b6000808211610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bcd57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122022a00bf1bafd7a6036faa3398b5960b9ed4b5c6b7ce838fc92eea9d1688d755064736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50604051610d7e380380610d7e833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c0909601519495939492939192909190600061006a610119565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039889166001600160a01b031991821617909155600280549789169782169790971790965560038054958816958716959095179094556004805493909616929094169190911790935560059290925560065560075561011d565b3390565b610c528061012c6000396000f3fe6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063cb1d555a1161004e578063cb1d555a146101c6578063e79ffa11146101f0578063f2fde38b14610205576100bc565b80638da5cb5b14610172578063935db0a614610187578063ab7cc2db146101b1576100bc565b80634325dea0116100a55780634325dea01461012b57806361cfe85e14610140578063715018a61461015d576100bc565b8063144f2f94146100c1578063361b45a8146100ff575b600080fd5b3480156100cd57600080fd5b506100d6610245565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010b57600080fd5b506101296004803603602081101561012257600080fd5b5035610261565b005b34801561013757600080fd5b506100d661030e565b6101296004803603602081101561015657600080fd5b503561032a565b34801561016957600080fd5b5061012961066e565b34801561017e57600080fd5b506100d6610785565b34801561019357600080fd5b50610129600480360360208110156101aa57600080fd5b50356107a1565b3480156101bd57600080fd5b506100d661084e565b3480156101d257600080fd5b50610129600480360360208110156101e957600080fd5b503561086a565b3480156101fc57600080fd5b506100d6610917565b34801561021157600080fd5b506101296004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610933565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610269610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610287610785565b73ffffffffffffffffffffffffffffffffffffffff161461030957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600755565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b678ac7230489e800008110156103a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416d6f756e74206973206e6f742067726561746572207468616e203130000000604482015290519081900360640190fd5b60015460025460055473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906103e6906064906103e0908890610ad8565b90610b54565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b505060015460035460065473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906104c1906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b505060015460045460075473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92339291169061059c906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b50506040805182815290517f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef19181900360200190a150565b610676610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610694610785565b73ffffffffffffffffffffffffffffffffffffffff161461071657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107a9610ad4565b73ffffffffffffffffffffffffffffffffffffffff166107c7610785565b73ffffffffffffffffffffffffffffffffffffffff161461084957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600655565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610872610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610890610785565b73ffffffffffffffffffffffffffffffffffffffff161461091257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600555565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b61093b610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610959610785565b73ffffffffffffffffffffffffffffffffffffffff16146109db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610bd66026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082610ae757506000610b4e565b82820282848281610af457fe5b0414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610bfc6021913960400191505060405180910390fd5b90505b92915050565b6000808211610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bcd57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122022a00bf1bafd7a6036faa3398b5960b9ed4b5c6b7ce838fc92eea9d1688d755064736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100bc5760003560e01c80638da5cb5b11610074578063cb1d555a1161004e578063cb1d555a146101c6578063e79ffa11146101f0578063f2fde38b14610205576100bc565b80638da5cb5b14610172578063935db0a614610187578063ab7cc2db146101b1576100bc565b80634325dea0116100a55780634325dea01461012b57806361cfe85e14610140578063715018a61461015d576100bc565b8063144f2f94146100c1578063361b45a8146100ff575b600080fd5b3480156100cd57600080fd5b506100d6610245565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010b57600080fd5b506101296004803603602081101561012257600080fd5b5035610261565b005b34801561013757600080fd5b506100d661030e565b6101296004803603602081101561015657600080fd5b503561032a565b34801561016957600080fd5b5061012961066e565b34801561017e57600080fd5b506100d6610785565b34801561019357600080fd5b50610129600480360360208110156101aa57600080fd5b50356107a1565b3480156101bd57600080fd5b506100d661084e565b3480156101d257600080fd5b50610129600480360360208110156101e957600080fd5b503561086a565b3480156101fc57600080fd5b506100d6610917565b34801561021157600080fd5b506101296004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610933565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610269610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610287610785565b73ffffffffffffffffffffffffffffffffffffffff161461030957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600755565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b678ac7230489e800008110156103a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416d6f756e74206973206e6f742067726561746572207468616e203130000000604482015290519081900360640190fd5b60015460025460055473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906103e6906064906103e0908890610ad8565b90610b54565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b505060015460035460065473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd9233929116906104c1906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b505060015460045460075473ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92339291169061059c906064906103e0908890610ad8565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b505050506040513d602081101561063657600080fd5b50506040805182815290517f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef19181900360200190a150565b610676610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610694610785565b73ffffffffffffffffffffffffffffffffffffffff161461071657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107a9610ad4565b73ffffffffffffffffffffffffffffffffffffffff166107c7610785565b73ffffffffffffffffffffffffffffffffffffffff161461084957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600655565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610872610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610890610785565b73ffffffffffffffffffffffffffffffffffffffff161461091257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600555565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b61093b610ad4565b73ffffffffffffffffffffffffffffffffffffffff16610959610785565b73ffffffffffffffffffffffffffffffffffffffff16146109db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610bd66026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082610ae757506000610b4e565b82820282848281610af457fe5b0414610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610bfc6021913960400191505060405180910390fd5b90505b92915050565b6000808211610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bcd57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122022a00bf1bafd7a6036faa3398b5960b9ed4b5c6b7ce838fc92eea9d1688d755064736f6c634300060c0033",
      "srcmap": "221:1359:14:-:0;;;458:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;458:269:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;580:9:14;:14;;-1:-1:-1;;;;;580:14:14;;;-1:-1:-1;;;;;;580:14:14;;;;;;;604:5;:12;;;;;;;;;;;;;;;626:3;:8;;;;;;;;;;;;;;;644:4;:10;;;;;;;;;;;;;;;;;664:6;:14;;;;688:4;:10;708:5;:12;221:1359;;598:104:6;685:10;598:104;:::o;221:1359:14:-;;;;;;;",
      "srcmap-runtime": "221:1359:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;322:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1425:88;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1425:88:14;;:::i;:::-;;291:24;;;;;;;;;;;;;:::i;768:457::-;;;;;;;;;;;;;;;;-1:-1:-1;768:457:14;;:::i;1717:145:0:-;;;;;;;;;;;;;:::i;1085:85::-;;;;;;;;;;;;;:::i;1333:86:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1333:86:14;;:::i;349:18::-;;;;;;;;;;;;;:::i;1231:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:96:14;;:::i;374:19::-;;;;;;;;;;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;322:20:14:-;;;;;;:::o;1425:88::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:5:14::1;:16:::0;1425:88::o;291:24::-;;;;;;:::o;768:457::-;850:20;840:6;:30;;832:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;921:9;;965:5;;984:6;;921:9;;;;;914:30;;945:10;;965:5;;;973:27;;996:3;;973:18;;:6;;:10;:18::i;:::-;:22;;:27::i;:::-;914:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1018:9:14;;1062:3;;1079:4;;1018:9;;;;;1011:30;;1042:10;;1062:3;;;1068:25;;1089:3;;1068:16;;:6;;:10;:16::i;:25::-;1011:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1111:9:14;;1155:4;;1173:5;;1111:9;;;;;1104:30;;1135:10;;1155:4;;;1162:26;;1184:3;;1162:17;;:6;;:10;:17::i;:26::-;1104:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1204:14:14;;;;;;;;;;;;;1104:85;1204:14;;;768:457;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;1333:86:14:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1397:4:14::1;:15:::0;1333:86::o;349:18::-;;;;;;:::o;1231:96::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1303:6:14::1;:17:::0;1231:96::o;374:19::-;;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o"
    },
    "contracts/MasterBreeder.sol:MasterBreeder": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract GovernanceToken",
              "name": "_govToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_liquidityaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_comfundaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_founderaddr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_rewardPerBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_startBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_halvingAfterBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_userDepFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_devDepFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "_rewardMultiplier",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_blockDeltaStartStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_blockDeltaEndStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_userFeeStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_devFeeStage",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "EmergencyWithdraw",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "lockAmount",
              "type": "uint256"
            }
          ],
          "name": "SendGovernanceTokenReward",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Withdraw",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "FINISH_BONUS_AT_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "HALVING_AT_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_COM",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_DEV",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_FOUNDERS",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_LP",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_LOCK_BONUS_REWARD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "REWARD_MULTIPLIER",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "REWARD_PER_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "START_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "contract IERC20",
              "name": "_lpToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "add",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "blockDeltaEndStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "blockDeltaStartStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newFinish",
              "type": "uint256"
            }
          ],
          "name": "bonusFinishUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "claimReward",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_pids",
              "type": "uint256[]"
            }
          ],
          "name": "claimRewards",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newCom",
              "type": "address"
            }
          ],
          "name": "comUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "comfundaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            }
          ],
          "name": "dev",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "devDepFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "devFeeStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "devaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "emergencyWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newFounder",
              "type": "address"
            }
          ],
          "name": "founderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "founderaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalRefAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            }
          ],
          "name": "getMultiplier",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "pid1",
              "type": "uint256"
            }
          ],
          "name": "getNewRewardPerBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            }
          ],
          "name": "getPoolReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "forDev",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFarmer",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forLP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forCom",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFounders",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_user2",
              "type": "address"
            }
          ],
          "name": "getRefValueOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getTotalRefs",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract GovernanceToken",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newHalving",
              "type": "uint256[]"
            }
          ],
          "name": "halvingUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "lockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newcomlock",
              "type": "uint256"
            }
          ],
          "name": "lockcomUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newdevlock",
              "type": "uint256"
            }
          ],
          "name": "lockdevUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newfounderlock",
              "type": "uint256"
            }
          ],
          "name": "lockfounderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlplock",
              "type": "uint256"
            }
          ],
          "name": "locklpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newLP",
              "type": "address"
            }
          ],
          "name": "lpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "massUpdatePools",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "pendingReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolExistence",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolId1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "poolInfo",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "lpToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastRewardBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "accGovTokenPerShare",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "reclaimTokenOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseDeposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newMulReward",
              "type": "uint256[]"
            }
          ],
          "name": "rewardMulUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newReward",
              "type": "uint256"
            }
          ],
          "name": "rewardUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "set",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_devDepFees",
              "type": "uint256"
            }
          ],
          "name": "setDevDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_devFees",
              "type": "uint256[]"
            }
          ],
          "name": "setDevFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockEnds",
              "type": "uint256[]"
            }
          ],
          "name": "setStageEnds",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockStarts",
              "type": "uint256[]"
            }
          ],
          "name": "setStageStarts",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_usrDepFees",
              "type": "uint256"
            }
          ],
          "name": "setUserDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_userFees",
              "type": "uint256[]"
            }
          ],
          "name": "setUserFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newstarblock",
              "type": "uint256"
            }
          ],
          "name": "starblockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalAllocPoint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "updatePool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "usdOracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "userDelta",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "userDepFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "userFeeStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "userGlobalInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "globalAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalReferals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "globalRefAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "userInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardDebtAtBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastWithdrawBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "firstDepositBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blockdelta",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastDepositBlock",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040526000601e553480156200001657600080fd5b50604051620053be380380620053be83398181016040526101e08110156200003d57600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01805199519b9d9a9c989b979a9699959894979396929591948301929184640100000000821115620000a457600080fd5b908301906020820185811115620000ba57600080fd5b8251866020820283011164010000000082111715620000d857600080fd5b82525081516020918201928201910280838360005b8381101562000107578181015183820152602001620000ed565b50505050905001604052602001805160405193929190846401000000008211156200013157600080fd5b9083019060208201858111156200014757600080fd5b82518660208202830111640100000000821117156200016557600080fd5b82525081516020918201928201910280838360005b83811015620001945781810151838201526020016200017a565b5050505090500160405260200180516040519392919084640100000000821115620001be57600080fd5b908301906020820185811115620001d457600080fd5b8251866020820283011164010000000082111715620001f257600080fd5b82525081516020918201928201910280838360005b838110156200022157818101518382015260200162000207565b50505050905001604052602001805160405193929190846401000000008211156200024b57600080fd5b9083019060208201858111156200026157600080fd5b82518660208202830111640100000000821117156200027f57600080fd5b82525081516020918201928201910280838360005b83811015620002ae57818101518382015260200162000294565b5050505090500160405260200180516040519392919084640100000000821115620002d857600080fd5b908301906020820185811115620002ee57600080fd5b82518660208202830111640100000000821117156200030c57600080fd5b82525081516020918201928201910280838360005b838110156200033b57818101518382015260200162000321565b5050505090500160405250505060006200035a6200060860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016002819055508e600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960098190555088601381905550866011819055508560128190555084600a9080519060200190620004a3929190620006ce565b508351620004b990600c906020870190620006ce565b508251620004cf90600d906020860190620006ce565b508151620004e590600e906020850190620006ce565b508051620004fb90600f906020840190620006ce565b5060005b600a54600019018110156200058f5760006200054c6001620005388d62000538866001018f6200060c60201b620040f71790919060201c565b6200067360201b620041711790919060201c565b600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90191909155919091019050620004ff565b50620005b789620005386001600a80549050038b6200060c60201b620040f71790919060201c565b6010555050600b80546001810182556000919091526000197f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015550620007359b505050505050505050505050565b3390565b6000826200061d575060006200066d565b828202828482816200062b57fe5b04146200066a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200539d6021913960400191505060405180910390fd5b90505b92915050565b6000828201838110156200066a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200070c579160200282015b828111156200070c578251825591602001919060010190620006ef565b506200071a9291506200071e565b5090565b5b808211156200071a57600081556001016200071f565b614c5880620007456000396000f3fe608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861790558051608081018252938452908301998a5282019485526060820181815284549384018555939052517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600490920291820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919097161790955594517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696850155517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9697840155505090517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969890910155565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff1680611f52575033611f3a6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611f5b57600080fd5b601055565b3360009081526001602052604090205460ff1680611f9a575033611f826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611fa357600080fd5b601355565b3360009081526001602052604090205460ff1680611fe2575033611fca6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611feb57600080fd5b8051611ffe90600e906020840190614a63565b5050565b600a818154811061200f57fe5b600091825260209091200154905081565b3360009081526001602052604090205460ff168061205a5750336120426131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61206357600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806120e45750336120cc6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6120ed57600080fd5b8051611ffe90600b906020840190614a63565b600061210a614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c6020908152604091829020825160608101845281548152600282015492810183905260039091015492019190915290565b60135481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806121b657503361219e6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6121bf57600080fd5b600955565b600b818154811061200f57fe5b3360009081526001602052604090205460ff168061220b5750336121f36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61221457600080fd5b8051611ffe90600a906020840190614a63565b61222f614661565b73ffffffffffffffffffffffffffffffffffffffff1661224d6131f7565b73ffffffffffffffffffffffffffffffffffffffff16146122cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156122f257600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16806123785750336123606131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61238157600080fd5b8051611ffe90600d906020840190614a63565b3360009081526001602052604090205460ff16806123ce5750336123b66131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6123d757600080fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006019828154811061242d57fe5b906000526020600020906004020190508060020154431161244e5750612b0f565b8054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156124be57600080fd5b505afa1580156124d2573d6000803e3d6000fd5b505050506040513d60208110156124e857600080fd5b50519050806124fe575043600290910155612b0f565b600080600080600061251987600201544389600101546139c4565b600354604080517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051969b50949950929750909550935073ffffffffffffffffffffffffffffffffffffffff16916340c10f199160448082019260009290919082900301818387803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506125e06125d5876115fe64e8d4a51000886140f790919063ffffffff16565b600389015490614171565b6003880155436002880155841561273257600354600554604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101899052905191909216916340c10f1991604480830192600092919082900301818387803b15801561266f57600080fd5b505af1158015612683573d6000803e3d6000fd5b5050505060105443116127325760035460055473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf91166126c660646115fe8a604b6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b505050505b821561287957600354600654604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191909216916340c10f1991604480830192600092919082900301818387803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505060105443116128795760035460065473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661280d60646115fe88602d6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050505b81156129c057600354600754604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101869052905191909216916340c10f1991604480830192600092919082900301818387803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b5050505060105443116129c05760035460075473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661295460646115fe8760556140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b505050505b8015612b0757600354600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101859052905191909216916340c10f1991604480830192600092919082900301818387803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050506010544311612b075760035460085473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf9116612a9b60646115fe86605f6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050505b505050505050505b50565b600280541415612b8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028081905550600060198281548110612b9957fe5b60009182526020808320858452601b825260408085203386529092529083208054600490930290910193509190612bd8906064906115fe90604b6140f7565b90506000612bf960646115fe601986600001546140f790919063ffffffff16565b600080855560018501558454909150612c299073ffffffffffffffffffffffffffffffffffffffff1633846145d4565b6005548454612c529173ffffffffffffffffffffffffffffffffffffffff9182169116836145d4565b604080518381529051869133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a350506001600255505050565b6000612c9f614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260409182902082516060810184528154815260028201549281019290925260030154910181905290565b60005b8151811015611ffe57612d15828281518110612d0857fe5b602002602001015161384e565b600101612cf0565b3360009081526001602052604090205460ff1680612d57575033612d3f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b612d6057600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060030155565b600c818154811061200f57fe5b60195460005b81811015611ffe57612dba8161241e565b600101612da9565b612dca614661565b73ffffffffffffffffffffffffffffffffffffffff16612de86131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8015612e7857612e78612da3565b612eb582612eaf60198681548110612e8c57fe5b906000526020600020906004020160010154601e546144dc90919063ffffffff16565b90614171565b601e819055508160198481548110612ec957fe5b906000526020600020906004020160010181905550505050565b612eeb614661565b73ffffffffffffffffffffffffffffffffffffffff16612f096131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612f8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3360009081526001602052604090205460ff168061303457503361301c6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61303d57600080fd5b601155565b3360009081526001602052604090205460ff168061307c5750336130646131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61308557600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060040155565b60115481565b3360009081526001602052604090205460ff16806130fb5750336130e36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61310457600080fd5b8051611ffe90600c906020840190614a63565b3360009081526001602052604090205460ff16806131515750336131396131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61315a57600080fd5b8051611ffe90600f906020840190614a63565b3360009081526001602052604090205460ff16806131a757503361318f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6131b057600080fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b601354600090819084101561322c576000915050613309565b60005b600b54811015613305576000600b828154811061324857fe5b906000526020600020015490506001600a80549050038211156132715760009350505050613309565b8085116132b75760006132a0600a848154811061328a57fe5b600091825260209091200154611bc5888a6144dc565b90506132ac8482614171565b945050505050613309565b808610156132fc5760006132e7600a84815481106132d157fe5b600091825260209091200154611bc5848a6144dc565b919650869190506132f88482614171565b9350505b5060010161322f565b5090505b92915050565b60028054141561338057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055816133da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614bc46035913960400191505060405180910390fd5b6000601984815481106133e957fe5b60009182526020808320878452601b825260408085203380875290845281862060055473ffffffffffffffffffffffffffffffffffffffff9081168852838820908a168852601c865283882092885283882060018401909652929096205460049590950290920195509290919015613481573360009081526001830160205260409020805488019055600382018054880190556134b0565b336000908152600180840160205260409091208054890190556002830180549091019055600382018054880190555b6134ca60646115fe6011548a6140f790919063ffffffff16565b81540181556134d88861241e565b6134e1886141e5565b84546135059073ffffffffffffffffffffffffffffffffffffffff1633308a614665565b8354613512574360028501555b61354261353a6135336127106115fe6011548c6140f790919063ffffffff16565b89906144dc565b855490614171565b808555600386015461355f9164e8d4a51000916115fe91906140f7565b84600101819055506135906135886135336127106115fe6012548c6140f790919063ffffffff16565b845490614171565b80845560038601546135ad9164e8d4a51000916115fe91906140f7565b6001840155604080518881529051899133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a36004840154156135f8576135ff565b4360048501555b50504360069092019190915550506001600255505050565b6000613621614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c60209081526040918290208251606081018452815480825260028301549382019390935260039091015492019190915290565b601b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60145481565b60095481565b60105481565b600080601984815481106136e457fe5b60009182526020808320878452601b8252604080852073ffffffffffffffffffffffffffffffffffffffff898116875290845281862060049586029093016003810154815484517f70a082310000000000000000000000000000000000000000000000000000000081523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561378857600080fd5b505afa15801561379c573d6000803e3d6000fd5b505050506040513d60208110156137b257600080fd5b50516002850154909150431180156137ca5750600081115b1561380f5760006137e485600201544387600101546139c4565b5091935061380b925061380491508490506115fe8464e8d4a510006140f7565b8490614171565b9250505b61383d836001015461383764e8d4a510006115fe8688600001546140f790919063ffffffff16565b906144dc565b979650505050505050565b60175481565b6138578161241e565b612b0f816141e5565b3360009081526001602052604090205460ff168061389a5750336138826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6138a357600080fd5b601555565b60016020526000908152604090205460ff1681565b600f818154811061200f57fe5b60125481565b3360009081526001602052604090205460ff168061390a5750336138f26131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61391357600080fd5b601755565b60185481565b3360009081526001602052604090205460ff16806139585750336139406131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61396157600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806139d78989613213565b905060006139fa601e546115fe8a611bc5600954876140f790919063ffffffff16565b90506000613b32600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6957600080fd5b505afa158015613a7d573d6000803e3d6000fd5b505050506040513d6020811015613a9357600080fd5b5051600354604080517f355274ea000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163355274ea91600480820192602092909190829003018186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6020811015613b2a57600080fd5b5051906144dc565b905081811015613b545760009750809650600095506000945060009350613bc8565b613b6e60646115fe601554856140f790919063ffffffff16565b9750819650613b8d60646115fe601654856140f790919063ffffffff16565b9550613ba960646115fe601754856140f790919063ffffffff16565b9450613bc560646115fe601854856140f790919063ffffffff16565b93505b505050939792965093509350565b600d818154811061200f57fe5b601d6020526000908152604090205460ff1681565b601a6020526000908152604090205481565b613c12614661565b73ffffffffffffffffffffffffffffffffffffffff16613c306131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613cb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600e818154811061200f57fe5b60055473ffffffffffffffffffffffffffffffffffffffff1681565b601c6020526000908152604090208054600282015460039092015490919083565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152601c602090815260408083209390941682526001909201909152205490565b3360009081526001602052604090205460ff1680613dc4575033613dac6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613dcd57600080fd5b601855565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b3360009081526001602052604090205460ff1680613e2e575033613e166131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613e3757600080fd5b600354604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015613eab57600080fd5b505af1158015613ebf573d6000803e3d6000fd5b5050505050565b613ece614661565b73ffffffffffffffffffffffffffffffffffffffff16613eec6131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613f6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ae56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806140a15750336140896131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140aa57600080fd5b601655565b3360009081526001602052604090205460ff16806140e95750336140d16131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140f257600080fd5b601255565b60008261410657506000613309565b8282028284828161411357fe5b041461416a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b7b6021913960400191505060405180910390fd5b9392505050565b60008282018381101561416a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000601982815481106141f457fe5b60009182526020808320858452601b825260408085203386529092529220805460049092029092019250156144d7576000614251826001015461383764e8d4a510006115fe876003015487600001546140f790919063ffffffff16565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156142c857600080fd5b505afa1580156142dc573d6000803e3d6000fd5b505050506040513d60208110156142f257600080fd5b5051905080821115614302578091505b81156144b457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b505060105460028401546000911061446d576143d860646115fe601454866140f790919063ffffffff16565b600354604080517f282d3fdf00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163282d3fdf9160448082019260009290919082900301818387803b15801561445457600080fd5b505af1158015614468573d6000803e3d6000fd5b505050505b43600285015560408051848152602081018390528151889233927f3887f2857beaaf367eb618dfb5e22c1ebd74425affb0602c2e9fe126e3f860eb929081900390910190a3505b600384015483546144cf9164e8d4a51000916115fe916140f7565b600184015550505b505050565b60008282111561454d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008082116145c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816145cc57fe5b049392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526144d7908490614700565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526146fa908590614700565b50505050565b6060614762826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166147d89092919063ffffffff16565b8051909150156144d75780806020019051602081101561478157600080fd5b50516144d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614bf9602a913960400191505060405180910390fd5b60606147e784846000856147ef565b949350505050565b60608247101561484a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614b556026913960400191505060405180910390fd5b6148538561499f565b6148be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061492857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016148eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461498a576040519150601f19603f3d011682016040523d82523d6000602084013e61498f565b606091505b509150915061383d8282866149a5565b3b151590565b606083156149b457508161416a565b8251156149c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a28578181015183820152602001614a10565b50505050905090810190601f168015614a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215614a9e579160200282015b82811115614a9e578251825591602001919060010190614a83565b50614aaa929150614acf565b5090565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115614aaa5760008155600101614ad056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c6963617465644d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205be945065af410dcdd28dd012af8e5ba032fa0b35c72e69010c0ddf6c804923d64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x1E SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x53BE CODESIZE SUB DUP1 PUSH3 0x53BE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH2 0x1E0 DUP2 LT ISZERO PUSH3 0x3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xC0 DUP10 ADD MLOAD PUSH1 0xE0 DUP11 ADD MLOAD PUSH2 0x100 DUP12 ADD MLOAD PUSH2 0x120 DUP13 ADD MLOAD PUSH2 0x140 DUP14 ADD DUP1 MLOAD SWAP10 MLOAD SWAP12 SWAP14 SWAP11 SWAP13 SWAP9 SWAP12 SWAP8 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x107 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xED JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x207 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x2AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x294 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x33B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x321 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x0 PUSH3 0x35A PUSH3 0x608 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP15 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x7 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP10 PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP9 PUSH1 0x13 DUP2 SWAP1 SSTORE POP DUP7 PUSH1 0x11 DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x12 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0xA SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x4A3 SWAP3 SWAP2 SWAP1 PUSH3 0x6CE JUMP JUMPDEST POP DUP4 MLOAD PUSH3 0x4B9 SWAP1 PUSH1 0xC SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 PUSH3 0x6CE JUMP JUMPDEST POP DUP3 MLOAD PUSH3 0x4CF SWAP1 PUSH1 0xD SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x6CE JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x4E5 SWAP1 PUSH1 0xE SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x6CE JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x4FB SWAP1 PUSH1 0xF SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x6CE JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH3 0x58F JUMPI PUSH1 0x0 PUSH3 0x54C PUSH1 0x1 PUSH3 0x538 DUP14 PUSH3 0x538 DUP7 PUSH1 0x1 ADD DUP16 PUSH3 0x60C PUSH1 0x20 SHL PUSH3 0x40F7 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x673 PUSH1 0x20 SHL PUSH3 0x4171 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE PUSH1 0x0 SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x175B7A638427703F0DBE7BB9BBF987A2551717B34E79F33B5B1008D1FA01DB9 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 SWAP1 SWAP2 ADD SWAP1 POP PUSH3 0x4FF JUMP JUMPDEST POP PUSH3 0x5B7 DUP10 PUSH3 0x538 PUSH1 0x1 PUSH1 0xA DUP1 SLOAD SWAP1 POP SUB DUP12 PUSH3 0x60C PUSH1 0x20 SHL PUSH3 0x40F7 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x10 SSTORE POP POP PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 NOT PUSH32 0x175B7A638427703F0DBE7BB9BBF987A2551717B34E79F33B5B1008D1FA01DB9 SWAP1 SWAP2 ADD SSTORE POP PUSH3 0x735 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x61D JUMPI POP PUSH1 0x0 PUSH3 0x66D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH3 0x62B JUMPI INVALID JUMPDEST DIV EQ PUSH3 0x66A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x539D PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x66A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x70C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x70C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x6EF JUMP JUMPDEST POP PUSH3 0x71A SWAP3 SWAP2 POP PUSH3 0x71E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x71A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x71F JUMP JUMPDEST PUSH2 0x4C58 DUP1 PUSH3 0x745 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x514 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x847BDAA4 GT PUSH2 0x2A1 JUMPI DUP1 PUSH4 0xC6929E53 GT PUSH2 0x16B JUMPI DUP1 PUSH4 0xD49E77CD GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xED9BDEDA GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x12B4 JUMPI DUP1 PUSH4 0xF2FFC22C EQ PUSH2 0x12E7 JUMPI DUP1 PUSH4 0xFB075433 EQ PUSH2 0x1304 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xED9BDEDA EQ PUSH2 0x1279 JUMPI DUP1 PUSH4 0xEDA67048 EQ PUSH2 0x1281 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xDD77B9FD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xDD77B9FD EQ PUSH2 0x1219 JUMPI DUP1 PUSH4 0xDE988524 EQ PUSH2 0x1254 JUMPI DUP1 PUSH4 0xEC12173D EQ PUSH2 0x1271 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xD49E77CD EQ PUSH2 0x11C0 JUMPI DUP1 PUSH4 0xD9608D8A EQ PUSH2 0x11C8 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xCB0B8CA1 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0xCE2529C9 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xCE2529C9 EQ PUSH2 0x113D JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x1170 JUMPI DUP1 PUSH4 0xD007DB29 EQ PUSH2 0x11A3 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xCB0B8CA1 EQ PUSH2 0x10ED JUMPI DUP1 PUSH4 0xCBD258B5 EQ PUSH2 0x110A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xC6929E53 EQ PUSH2 0x1056 JUMPI DUP1 PUSH4 0xC749D614 EQ PUSH2 0x105E JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0xC8ED7680 EQ PUSH2 0x1099 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x975532DC GT PUSH2 0x219 JUMPI DUP1 PUSH4 0xB6066962 GT PUSH2 0x1CD JUMPI DUP1 PUSH4 0xBEFF2A53 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xBEFF2A53 EQ PUSH2 0x1014 JUMPI DUP1 PUSH4 0xC56A10FF EQ PUSH2 0x1031 JUMPI DUP1 PUSH4 0xC663BAA6 EQ PUSH2 0x1039 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xB6066962 EQ PUSH2 0xFB0 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0xFCD JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x98969E82 GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x98969E82 EQ PUSH2 0xF52 JUMPI DUP1 PUSH4 0xA02306F9 EQ PUSH2 0xF8B JUMPI DUP1 PUSH4 0xAE169A50 EQ PUSH2 0xF93 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x975532DC EQ PUSH2 0xF42 JUMPI DUP1 PUSH4 0x980C2A98 EQ PUSH2 0xF4A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x8DBB1E3A GT PUSH2 0x270 JUMPI DUP1 PUSH4 0x929C6971 GT PUSH2 0x255 JUMPI DUP1 PUSH4 0x929C6971 EQ PUSH2 0xE96 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0xEC9 JUMPI DUP1 PUSH4 0x95FDF258 EQ PUSH2 0xF3A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x8DBB1E3A EQ PUSH2 0xE34 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0xE57 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x847BDAA4 EQ PUSH2 0xCB3 JUMPI DUP1 PUSH4 0x8CC883CE EQ PUSH2 0xD56 JUMPI DUP1 PUSH4 0x8D88A90E EQ PUSH2 0xDF9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE2C JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x3C9D9267 GT PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x5C5E490B GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x64482F79 GT PUSH2 0x30E JUMPI DUP1 PUSH4 0x7C39C9C9 GT PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x7C39C9C9 EQ PUSH2 0xC4F JUMPI DUP1 PUSH4 0x82386D58 EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x82796E98 EQ PUSH2 0xCAB JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x64482F79 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xC47 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x6066DEBD GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x6066DEBD EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x6245F084 EQ PUSH2 0xBF7 JUMPI DUP1 PUSH4 0x630B5BA1 EQ PUSH2 0xC14 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x5C5E490B EQ PUSH2 0xAE2 JUMPI DUP1 PUSH4 0x5EAC6239 EQ PUSH2 0xB15 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 GT PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x4DBF85CA GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x4DBF85CA EQ PUSH2 0xA75 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0xAA8 JUMPI DUP1 PUSH4 0x5312EA8E EQ PUSH2 0xAC5 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x99F JUMPI DUP1 PUSH4 0x4AF0E3E1 EQ PUSH2 0x9D2 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x3C9D9267 EQ PUSH2 0x8BA JUMPI DUP1 PUSH4 0x3D479CD5 EQ PUSH2 0x8C2 JUMPI DUP1 PUSH4 0x4179B4FB EQ PUSH2 0x8DF JUMPI DUP1 PUSH4 0x46664064 EQ PUSH2 0x8FC JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1EAAA045 GT PUSH2 0x490 JUMPI DUP1 PUSH4 0x2FDA7735 GT PUSH2 0x444 JUMPI DUP1 PUSH4 0x354AFFB7 GT PUSH2 0x429 JUMPI DUP1 PUSH4 0x354AFFB7 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x36EBCDE6 EQ PUSH2 0x87F JUMPI DUP1 PUSH4 0x39B3E826 EQ PUSH2 0x8B2 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x2FDA7735 EQ PUSH2 0x78C JUMPI DUP1 PUSH4 0x30FB8E0E EQ PUSH2 0x7A9 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x245B211D GT PUSH2 0x475 JUMPI DUP1 PUSH4 0x245B211D EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x24B95C3E EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0x2A7B0107 EQ PUSH2 0x6E9 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1EAAA045 EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0x22A376B0 EQ PUSH2 0x6A7 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xA67D518 GT PUSH2 0x4E7 JUMPI DUP1 PUSH4 0x1526FE27 GT PUSH2 0x4CC JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x1D465C82 EQ PUSH2 0x649 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xA67D518 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x5A8 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1B689C0 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x5268CFF EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x9AE4D2C EQ PUSH2 0x583 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1321 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x540 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x138B JUMP JUMPDEST PUSH2 0x571 PUSH2 0x13C9 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13CF JUMP JUMPDEST PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x1B52 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1BCB JUMP JUMPDEST PUSH2 0x540 PUSH2 0x1EFC JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F18 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1FA8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2002 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2020 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x80D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x20AA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2100 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x215A JUMP JUMPDEST PUSH2 0x540 PUSH2 0x2160 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217C JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x21C4 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x21D1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2227 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x233E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2394 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x241E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2B12 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2C95 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2CED SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2D1D JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2D96 JUMP JUMPDEST PUSH2 0x536 PUSH2 0x2DA3 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x2DC2 JUMP JUMPDEST PUSH2 0x536 PUSH2 0x2EE3 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2FFA JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3042 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x30BB JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x30C1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3117 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x316D JUMP JUMPDEST PUSH2 0x540 PUSH2 0x31F7 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x330F JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3617 JUMP JUMPDEST PUSH2 0xF02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xEDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3673 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP8 DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP7 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x36C2 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x36C8 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x36CE JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x36D4 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3848 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x384E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3860 JUMP JUMPDEST PUSH2 0x1000 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x571 PUSH2 0x38CA JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38D0 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3918 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x391E JUMP JUMPDEST PUSH2 0x540 PUSH2 0x39A8 JUMP JUMPDEST PUSH2 0x10C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x39C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3BD6 JUMP JUMPDEST PUSH2 0x1000 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BE3 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3C0A JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D04 JUMP JUMPDEST PUSH2 0x540 PUSH2 0x3D11 JUMP JUMPDEST PUSH2 0x11FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x122F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3D4E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D8A JUMP JUMPDEST PUSH2 0x540 PUSH2 0x3DD2 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DF4 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3EC6 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4067 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x40AF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x135B JUMPI POP CALLER PUSH2 0x1343 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x14 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x19 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD ISZERO PUSH2 0x13BB JUMPI PUSH1 0x3 ADD SLOAD NUMBER SUB SWAP1 POP PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD NUMBER SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x1440 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1456 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP8 MSTORE PUSH1 0x1C SWAP1 SWAP5 MSTORE DUP2 DUP7 KECCAK256 SWAP1 DUP7 MSTORE SWAP5 KECCAK256 DUP3 SLOAD PUSH1 0x4 SWAP1 SWAP5 MUL SWAP1 SWAP2 ADD SWAP5 POP SWAP1 SWAP3 SWAP2 DUP7 GT ISZERO PUSH2 0x1503 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B34 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO PUSH2 0x1543 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP1 SLOAD DUP7 SWAP1 SUB DUP2 SSTORE PUSH2 0x1553 DUP8 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x155C DUP8 PUSH2 0x41E5 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x1AF6 JUMPI DUP3 SLOAD PUSH2 0x156E SWAP1 DUP8 PUSH2 0x44DC JUMP JUMPDEST DUP4 SSTORE PUSH1 0x3 DUP4 ADD SLOAD ISZERO PUSH2 0x158B JUMPI PUSH1 0x3 DUP4 ADD SLOAD NUMBER SUB PUSH1 0x5 DUP5 ADD SSTORE PUSH2 0x1598 JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD NUMBER SUB PUSH1 0x5 DUP5 ADD SSTORE JUMPDEST PUSH1 0xC PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x15A6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD EQ DUP1 PUSH2 0x15C5 JUMPI POP DUP3 PUSH1 0x6 ADD SLOAD NUMBER EQ JUMPDEST ISZERO PUSH2 0x165E JUMPI PUSH2 0x1623 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP12 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x4553 JUMP JUMPDEST DUP7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH1 0xC PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x166C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x16A6 JUMPI POP PUSH1 0xD PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x1693 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x16FD JUMPI PUSH2 0x16C5 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x170B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1745 JUMPI POP PUSH1 0xD PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x1732 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x179C JUMPI PUSH2 0x1764 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x2 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x17AA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x17E4 JUMPI POP PUSH1 0xD PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x17D1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x183B JUMPI PUSH2 0x1803 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x3 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x1849 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1883 JUMPI POP PUSH1 0xD PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x1870 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x18DA JUMPI PUSH2 0x18A2 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x4 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x18E8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1922 JUMPI POP PUSH1 0xD PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x190F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x197F JUMPI PUSH2 0x1942 CALLER PUSH2 0x1604 PUSH2 0x3E8 PUSH2 0x15FE PUSH1 0xE PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH2 0x1659 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1604 PUSH2 0x3E8 PUSH2 0x15FE PUSH1 0xF PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x6 DUP2 SLOAD DUP2 LT PUSH2 0x198D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI POP PUSH1 0xD PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x19B4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1A20 JUMPI PUSH2 0x19E7 CALLER PUSH2 0x1604 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0xE PUSH1 0x6 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH2 0x2710 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x6 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x7 DUP2 SLOAD DUP2 LT PUSH2 0x1A2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO PUSH2 0x1A98 JUMPI PUSH2 0x1A5F CALLER PUSH2 0x1604 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0xE PUSH1 0x7 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1A98 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH2 0x2710 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x7 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD DUP4 SLOAD PUSH2 0x1AB3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD DUP9 SWAP2 CALLER SWAP2 PUSH32 0xF279E6A1F5E320CCA91135676D9CB6E44CA8A08C0B88342BCDB1144F6511B568 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 NUMBER PUSH1 0x3 DUP5 ADD SSTORE JUMPDEST POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1B11 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x4 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP4 POP SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B68 PUSH1 0x1 NUMBER SUB NUMBER PUSH2 0x3213 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1B85 JUMPI PUSH1 0x9 SLOAD PUSH2 0x1B7D SWAP1 DUP3 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x13C4 JUMP JUMPDEST PUSH2 0x1B7D PUSH1 0x1E SLOAD PUSH2 0x15FE PUSH1 0x19 PUSH1 0x1 DUP8 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1B9E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD PUSH2 0x1BC5 PUSH1 0x9 SLOAD DUP7 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x40F7 JUMP JUMPDEST PUSH2 0x1BD3 PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BF1 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1CF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B9C PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1D70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B0B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1D7E JUMPI PUSH2 0x1D7E PUSH2 0x2DA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x13 SLOAD NUMBER GT PUSH2 0x1D91 JUMPI PUSH1 0x13 SLOAD PUSH2 0x1D93 JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x1E SLOAD SWAP1 SWAP2 POP PUSH2 0x1DA3 SWAP1 DUP7 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x19 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 SWAP6 DUP7 ADD SWAP1 SSTORE PUSH1 0x1D DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 OR SWAP1 SSTORE DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD SWAP10 DUP11 MSTORE DUP3 ADD SWAP5 DUP6 MSTORE PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE DUP5 SLOAD SWAP4 DUP5 ADD DUP6 SSTORE SWAP4 SWAP1 MSTORE MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9695 PUSH1 0x4 SWAP1 SWAP3 MUL SWAP2 DUP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP8 AND OR SWAP1 SWAP6 SSTORE SWAP5 MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9696 DUP6 ADD SSTORE MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9697 DUP5 ADD SSTORE POP POP SWAP1 MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9698 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1F52 JUMPI POP CALLER PUSH2 0x1F3A PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1F9A JUMPI POP CALLER PUSH2 0x1F82 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1FE2 JUMPI POP CALLER PUSH2 0x1FCA PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xE SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x205A JUMPI POP CALLER PUSH2 0x2042 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x20E4 JUMPI POP CALLER PUSH2 0x20CC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x20ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x210A PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x21B6 JUMPI POP CALLER PUSH2 0x219E PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x21BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 SSTORE JUMP JUMPDEST PUSH1 0xB DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x220B JUMPI POP CALLER PUSH2 0x21F3 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xA SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST PUSH2 0x222F PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x224D PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x22F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2378 JUMPI POP CALLER PUSH2 0x2360 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x23CE JUMPI POP CALLER PUSH2 0x23B6 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x23D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x242D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD NUMBER GT PUSH2 0x244E JUMPI POP PUSH2 0x2B0F JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x24FE JUMPI POP NUMBER PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x2B0F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2519 DUP8 PUSH1 0x2 ADD SLOAD NUMBER DUP10 PUSH1 0x1 ADD SLOAD PUSH2 0x39C4 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x259E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x25E0 PUSH2 0x25D5 DUP8 PUSH2 0x15FE PUSH5 0xE8D4A51000 DUP9 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 DUP10 ADD SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SSTORE NUMBER PUSH1 0x2 DUP9 ADD SSTORE DUP5 ISZERO PUSH2 0x2732 JUMPI PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2732 JUMPI PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x26C6 PUSH1 0x64 PUSH2 0x15FE DUP11 PUSH1 0x4B PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x272D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP3 ISZERO PUSH2 0x2879 JUMPI PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2879 JUMPI PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x280D PUSH1 0x64 PUSH2 0x15FE DUP9 PUSH1 0x2D PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP2 ISZERO PUSH2 0x29C0 JUMPI PUSH1 0x3 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2911 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x29C0 JUMPI PUSH1 0x3 SLOAD PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x2954 PUSH1 0x64 PUSH2 0x15FE DUP8 PUSH1 0x55 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 ISZERO PUSH2 0x2B07 JUMPI PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A58 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2B07 JUMPI PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x2A9B PUSH1 0x64 PUSH2 0x15FE DUP7 PUSH1 0x5F PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x2B83 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2B99 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD SWAP4 POP SWAP2 SWAP1 PUSH2 0x2BD8 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x15FE SWAP1 PUSH1 0x4B PUSH2 0x40F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BF9 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x19 DUP7 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD SSTORE DUP5 SLOAD SWAP1 SWAP2 POP PUSH2 0x2C29 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP5 SLOAD PUSH2 0x2C52 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP7 SWAP2 CALLER SWAP2 PUSH32 0xBB757047C2B5F3974FE26B7C10F732E7BCE710B0952A71082702781E62AE0595 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C9F PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 ADD SLOAD SWAP2 ADD DUP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FFE JUMPI PUSH2 0x2D15 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x384E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2CF0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2D57 JUMPI POP CALLER PUSH2 0x2D3F PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE SWAP2 KECCAK256 PUSH1 0x3 ADD SSTORE JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FFE JUMPI PUSH2 0x2DBA DUP2 PUSH2 0x241E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2DA9 JUMP JUMPDEST PUSH2 0x2DCA PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DE8 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2E6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2E78 JUMPI PUSH2 0x2E78 PUSH2 0x2DA3 JUMP JUMPDEST PUSH2 0x2EB5 DUP3 PUSH2 0x2EAF PUSH1 0x19 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x2E8C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x1E SLOAD PUSH2 0x44DC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x1E DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2EC9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x2EEB PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2F09 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2F8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3034 JUMPI POP CALLER PUSH2 0x301C PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x303D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x11 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x307C JUMPI POP CALLER PUSH2 0x3064 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3085 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE SWAP2 KECCAK256 PUSH1 0x4 ADD SSTORE JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x30FB JUMPI POP CALLER PUSH2 0x30E3 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xC SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3151 JUMPI POP CALLER PUSH2 0x3139 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x315A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xF SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x31A7 JUMPI POP CALLER PUSH2 0x318F PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x31B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 LT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x3309 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0x3305 JUMPI PUSH1 0x0 PUSH1 0xB DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3248 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0xA DUP1 SLOAD SWAP1 POP SUB DUP3 GT ISZERO PUSH2 0x3271 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x3309 JUMP JUMPDEST DUP1 DUP6 GT PUSH2 0x32B7 JUMPI PUSH1 0x0 PUSH2 0x32A0 PUSH1 0xA DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x328A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1BC5 DUP9 DUP11 PUSH2 0x44DC JUMP JUMPDEST SWAP1 POP PUSH2 0x32AC DUP5 DUP3 PUSH2 0x4171 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x3309 JUMP JUMPDEST DUP1 DUP7 LT ISZERO PUSH2 0x32FC JUMPI PUSH1 0x0 PUSH2 0x32E7 PUSH1 0xA DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x32D1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1BC5 DUP5 DUP11 PUSH2 0x44DC JUMP JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP2 SWAP1 POP PUSH2 0x32F8 DUP5 DUP3 PUSH2 0x4171 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x322F JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x3380 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SSTORE DUP2 PUSH2 0x33DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BC4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x33E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP9 MSTORE DUP4 DUP9 KECCAK256 SWAP1 DUP11 AND DUP9 MSTORE PUSH1 0x1C DUP7 MSTORE DUP4 DUP9 KECCAK256 SWAP3 DUP9 MSTORE DUP4 DUP9 KECCAK256 PUSH1 0x1 DUP5 ADD SWAP1 SWAP7 MSTORE SWAP3 SWAP1 SWAP7 KECCAK256 SLOAD PUSH1 0x4 SWAP6 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP6 POP SWAP3 SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x3481 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH2 0x34B0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP9 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x34CA PUSH1 0x64 PUSH2 0x15FE PUSH1 0x11 SLOAD DUP11 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 SLOAD ADD DUP2 SSTORE PUSH2 0x34D8 DUP9 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x34E1 DUP9 PUSH2 0x41E5 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x3505 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP11 PUSH2 0x4665 JUMP JUMPDEST DUP4 SLOAD PUSH2 0x3512 JUMPI NUMBER PUSH1 0x2 DUP6 ADD SSTORE JUMPDEST PUSH2 0x3542 PUSH2 0x353A PUSH2 0x3533 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0x11 SLOAD DUP13 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP10 SWAP1 PUSH2 0x44DC JUMP JUMPDEST DUP6 SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST DUP1 DUP6 SSTORE PUSH1 0x3 DUP7 ADD SLOAD PUSH2 0x355F SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x3590 PUSH2 0x3588 PUSH2 0x3533 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0x12 SLOAD DUP13 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST DUP1 DUP5 SSTORE PUSH1 0x3 DUP7 ADD SLOAD PUSH2 0x35AD SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD DUP10 SWAP2 CALLER SWAP2 PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP5 ADD SLOAD ISZERO PUSH2 0x35F8 JUMPI PUSH2 0x35FF JUMP JUMPDEST NUMBER PUSH1 0x4 DUP6 ADD SSTORE JUMPDEST POP POP NUMBER PUSH1 0x6 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3621 PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1B PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 POP DUP8 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x36E4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH1 0x4 SWAP6 DUP7 MUL SWAP1 SWAP4 ADD PUSH1 0x3 DUP2 ADD SLOAD DUP2 SLOAD DUP5 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE SWAP4 MLOAD SWAP2 SWAP9 POP SWAP4 SWAP7 SWAP4 SWAP6 SWAP4 SWAP5 SWAP3 SWAP1 SWAP2 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x379C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 DUP6 ADD SLOAD SWAP1 SWAP2 POP NUMBER GT DUP1 ISZERO PUSH2 0x37CA JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0x380F JUMPI PUSH1 0x0 PUSH2 0x37E4 DUP6 PUSH1 0x2 ADD SLOAD NUMBER DUP8 PUSH1 0x1 ADD SLOAD PUSH2 0x39C4 JUMP JUMPDEST POP SWAP2 SWAP4 POP PUSH2 0x380B SWAP3 POP PUSH2 0x3804 SWAP2 POP DUP5 SWAP1 POP PUSH2 0x15FE DUP5 PUSH5 0xE8D4A51000 PUSH2 0x40F7 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x4171 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x383D DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x3837 PUSH5 0xE8D4A51000 PUSH2 0x15FE DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x44DC JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3857 DUP2 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x2B0F DUP2 PUSH2 0x41E5 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x389A JUMPI POP CALLER PUSH2 0x3882 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x38A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x15 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x390A JUMPI POP CALLER PUSH2 0x38F2 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x17 SSTORE JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3958 JUMPI POP CALLER PUSH2 0x3940 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x39D7 DUP10 DUP10 PUSH2 0x3213 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FA PUSH1 0x1E SLOAD PUSH2 0x15FE DUP11 PUSH2 0x1BC5 PUSH1 0x9 SLOAD DUP8 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B32 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x355274EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x355274EA SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x44DC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x3B54 JUMPI PUSH1 0x0 SWAP8 POP DUP1 SWAP7 POP PUSH1 0x0 SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x3BC8 JUMP JUMPDEST PUSH2 0x3B6E PUSH1 0x64 PUSH2 0x15FE PUSH1 0x15 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP8 POP DUP2 SWAP7 POP PUSH2 0x3B8D PUSH1 0x64 PUSH2 0x15FE PUSH1 0x16 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP PUSH2 0x3BA9 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x17 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP5 POP PUSH2 0x3BC5 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x18 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0xD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3C12 PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3C30 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3CB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3DC4 JUMPI POP CALLER PUSH2 0x3DAC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3DCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x18 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3E2E JUMPI POP CALLER PUSH2 0x3E16 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3E37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2FDE38B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3ECE PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3EEC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3F6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3FDA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AE5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x40A1 JUMPI POP CALLER PUSH2 0x4089 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x40AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x16 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x40E9 JUMPI POP CALLER PUSH2 0x40D1 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x40F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4106 JUMPI POP PUSH1 0x0 PUSH2 0x3309 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x4113 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x416A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B7B PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x416A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x41F4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x4 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP ISZERO PUSH2 0x44D7 JUMPI PUSH1 0x0 PUSH2 0x4251 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x3837 PUSH5 0xE8D4A51000 PUSH2 0x15FE DUP8 PUSH1 0x3 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x42DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x4302 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x44B4 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x10 SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 LT PUSH2 0x446D JUMPI PUSH2 0x43D8 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x14 SLOAD DUP7 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x282D3FDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x282D3FDF SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST NUMBER PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD DUP9 SWAP3 CALLER SWAP3 PUSH32 0x3887F2857BEAAF367EB618DFB5E22C1EBD74425AFFB0602C2E9FE126E3F860EB SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD DUP4 SLOAD PUSH2 0x44CF SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x454D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x45C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x45CC JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x44D7 SWAP1 DUP5 SWAP1 PUSH2 0x4700 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x46FA SWAP1 DUP6 SWAP1 PUSH2 0x4700 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4762 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x47D8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x44D7 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x44D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BF9 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x47E7 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x47EF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x484A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B55 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4853 DUP6 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x48BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4928 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x48EB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x498A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x498F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x383D DUP3 DUP3 DUP7 PUSH2 0x49A5 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x49B4 JUMPI POP DUP2 PUSH2 0x416A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x49C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A28 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A10 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A55 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4A9E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4A9E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4A83 JUMP JUMPDEST POP PUSH2 0x4AAA SWAP3 SWAP2 POP PUSH2 0x4ACF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4AAA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4AD0 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734D6173746572427265656465723A3A61 PUSH5 0x643A206C70 KECCAK256 PUSH10 0x7320616C726561647920 PUSH10 0x6E20706F6F6C4D617374 PUSH6 0x724272656564 PUSH6 0x723A3A776974 PUSH9 0x647261773A206E6F74 KECCAK256 PUSH8 0x6F6F644164647265 PUSH20 0x733A20696E73756666696369656E742062616C61 PUSH15 0x636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F774D6173746572427265 PUSH6 0x6465723A3A6E PUSH16 0x6E4475706C6963617465643A20647570 PUSH13 0x6963617465644D617374657242 PUSH19 0x65656465723A3A6465706F7369743A20616D6F PUSH22 0x6E74206D757374206265206772656174657220746861 PUSH15 0x20305361666545524332303A204552 NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A26469706673582212205BE94506 GAS DELEGATECALL LT 0xDC 0xDD 0x28 0xDD ADD 0x2A 0xF8 0xE5 0xBA SUB 0x2F LOG0 0xB3 0x5C PUSH19 0xE69010C0DDF6C804923D64736F6C634300060C STOP CALLER MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77000000000000000000 ",
          "sourceMap": "788:28974:15:-:0;;;4507:1;4474:34;;5104:1490;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;;;:12;;:::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;850:159;1645:1:8;1760:7;:22;;;;5675:9:15;5664:8;;:20;;;;;-1:-1:-1;;;;;5664:20:15;;;;;-1:-1:-1;;;;;5664:20:15;;;;;;5704:8;5694:7;;:18;;;;;-1:-1:-1;;;;;5694:18:15;;;;;-1:-1:-1;;;;;5694:18:15;;;;;;5738:14;5722:13;;:30;;;;;-1:-1:-1;;;;;5722:30:15;;;;;-1:-1:-1;;;;;5722:30:15;;;;;;5776:12;5762:11;;:26;;;;;-1:-1:-1;;;;;5762:26:15;;;;;-1:-1:-1;;;;;5762:26:15;;;;;;5812:12;5798:11;;:26;;;;;-1:-1:-1;;;;;5798:26:15;;;;;-1:-1:-1;;;;;5798:26:15;;;;;;5853:15;5834:16;:34;;;;5892:11;5878;:25;;;;5926:11;5913:10;:24;;;;5959:10;5947:9;:22;;;;5999:17;5979;:37;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6026:44:15;;;;:20;;:44;;;;;:::i;:::-;-1:-1:-1;6080:40:15;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;6130:28:15;;;;:12;;:28;;;;;:::i;:::-;-1:-1:-1;6168:26:15;;;;:11;;:26;;;;;:::i;:::-;;6209:9;6204:211;6228:17;:24;-1:-1:-1;;6228:28:15;6224:32;;6204:211;;;6277:22;6302:51;6351:1;6302:44;6334:11;6302:27;6325:1;6327;6325:3;6302:18;:22;;;;;;:27;;;;:::i;:::-;:31;;;;;;:44;;;;:::i;:51::-;6367:16;:37;;;;;;;;-1:-1:-1;6367:37:15;;;;;;;;;;6258:3;;;;;-1:-1:-1;6204:211:15;;;;6448:95;6531:11;6448:65;6511:1;6484:17;:24;;;;:28;6448:18;:35;;;;;;:65;;;;:::i;:95::-;6424:21;:119;-1:-1:-1;;6553:16:15;:34;;;;;;;-1:-1:-1;6553:34:15;;;;-1:-1:-1;;6553:34:15;;;;;-1:-1:-1;788:28974:15;;-1:-1:-1;;;;;;;;;;;;788:28974:15;598:104:6;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;-1:-1:-1;;;3672:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;788:28974:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;788:28974:15;;;-1:-1:-1;788:28974:15;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861790558051608081018252938452908301998a5282019485526060820181815284549384018555939052517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600490920291820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919097161790955594517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696850155517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9697840155505090517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969890910155565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff1680611f52575033611f3a6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611f5b57600080fd5b601055565b3360009081526001602052604090205460ff1680611f9a575033611f826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611fa357600080fd5b601355565b3360009081526001602052604090205460ff1680611fe2575033611fca6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611feb57600080fd5b8051611ffe90600e906020840190614a63565b5050565b600a818154811061200f57fe5b600091825260209091200154905081565b3360009081526001602052604090205460ff168061205a5750336120426131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61206357600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806120e45750336120cc6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6120ed57600080fd5b8051611ffe90600b906020840190614a63565b600061210a614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c6020908152604091829020825160608101845281548152600282015492810183905260039091015492019190915290565b60135481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806121b657503361219e6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6121bf57600080fd5b600955565b600b818154811061200f57fe5b3360009081526001602052604090205460ff168061220b5750336121f36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61221457600080fd5b8051611ffe90600a906020840190614a63565b61222f614661565b73ffffffffffffffffffffffffffffffffffffffff1661224d6131f7565b73ffffffffffffffffffffffffffffffffffffffff16146122cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156122f257600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16806123785750336123606131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61238157600080fd5b8051611ffe90600d906020840190614a63565b3360009081526001602052604090205460ff16806123ce5750336123b66131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6123d757600080fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006019828154811061242d57fe5b906000526020600020906004020190508060020154431161244e5750612b0f565b8054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156124be57600080fd5b505afa1580156124d2573d6000803e3d6000fd5b505050506040513d60208110156124e857600080fd5b50519050806124fe575043600290910155612b0f565b600080600080600061251987600201544389600101546139c4565b600354604080517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051969b50949950929750909550935073ffffffffffffffffffffffffffffffffffffffff16916340c10f199160448082019260009290919082900301818387803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506125e06125d5876115fe64e8d4a51000886140f790919063ffffffff16565b600389015490614171565b6003880155436002880155841561273257600354600554604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101899052905191909216916340c10f1991604480830192600092919082900301818387803b15801561266f57600080fd5b505af1158015612683573d6000803e3d6000fd5b5050505060105443116127325760035460055473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf91166126c660646115fe8a604b6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b505050505b821561287957600354600654604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191909216916340c10f1991604480830192600092919082900301818387803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505060105443116128795760035460065473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661280d60646115fe88602d6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050505b81156129c057600354600754604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101869052905191909216916340c10f1991604480830192600092919082900301818387803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b5050505060105443116129c05760035460075473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661295460646115fe8760556140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b505050505b8015612b0757600354600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101859052905191909216916340c10f1991604480830192600092919082900301818387803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050506010544311612b075760035460085473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf9116612a9b60646115fe86605f6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050505b505050505050505b50565b600280541415612b8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028081905550600060198281548110612b9957fe5b60009182526020808320858452601b825260408085203386529092529083208054600490930290910193509190612bd8906064906115fe90604b6140f7565b90506000612bf960646115fe601986600001546140f790919063ffffffff16565b600080855560018501558454909150612c299073ffffffffffffffffffffffffffffffffffffffff1633846145d4565b6005548454612c529173ffffffffffffffffffffffffffffffffffffffff9182169116836145d4565b604080518381529051869133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a350506001600255505050565b6000612c9f614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260409182902082516060810184528154815260028201549281019290925260030154910181905290565b60005b8151811015611ffe57612d15828281518110612d0857fe5b602002602001015161384e565b600101612cf0565b3360009081526001602052604090205460ff1680612d57575033612d3f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b612d6057600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060030155565b600c818154811061200f57fe5b60195460005b81811015611ffe57612dba8161241e565b600101612da9565b612dca614661565b73ffffffffffffffffffffffffffffffffffffffff16612de86131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8015612e7857612e78612da3565b612eb582612eaf60198681548110612e8c57fe5b906000526020600020906004020160010154601e546144dc90919063ffffffff16565b90614171565b601e819055508160198481548110612ec957fe5b906000526020600020906004020160010181905550505050565b612eeb614661565b73ffffffffffffffffffffffffffffffffffffffff16612f096131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612f8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3360009081526001602052604090205460ff168061303457503361301c6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61303d57600080fd5b601155565b3360009081526001602052604090205460ff168061307c5750336130646131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61308557600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060040155565b60115481565b3360009081526001602052604090205460ff16806130fb5750336130e36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61310457600080fd5b8051611ffe90600c906020840190614a63565b3360009081526001602052604090205460ff16806131515750336131396131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61315a57600080fd5b8051611ffe90600f906020840190614a63565b3360009081526001602052604090205460ff16806131a757503361318f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6131b057600080fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b601354600090819084101561322c576000915050613309565b60005b600b54811015613305576000600b828154811061324857fe5b906000526020600020015490506001600a80549050038211156132715760009350505050613309565b8085116132b75760006132a0600a848154811061328a57fe5b600091825260209091200154611bc5888a6144dc565b90506132ac8482614171565b945050505050613309565b808610156132fc5760006132e7600a84815481106132d157fe5b600091825260209091200154611bc5848a6144dc565b919650869190506132f88482614171565b9350505b5060010161322f565b5090505b92915050565b60028054141561338057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055816133da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614bc46035913960400191505060405180910390fd5b6000601984815481106133e957fe5b60009182526020808320878452601b825260408085203380875290845281862060055473ffffffffffffffffffffffffffffffffffffffff9081168852838820908a168852601c865283882092885283882060018401909652929096205460049590950290920195509290919015613481573360009081526001830160205260409020805488019055600382018054880190556134b0565b336000908152600180840160205260409091208054890190556002830180549091019055600382018054880190555b6134ca60646115fe6011548a6140f790919063ffffffff16565b81540181556134d88861241e565b6134e1886141e5565b84546135059073ffffffffffffffffffffffffffffffffffffffff1633308a614665565b8354613512574360028501555b61354261353a6135336127106115fe6011548c6140f790919063ffffffff16565b89906144dc565b855490614171565b808555600386015461355f9164e8d4a51000916115fe91906140f7565b84600101819055506135906135886135336127106115fe6012548c6140f790919063ffffffff16565b845490614171565b80845560038601546135ad9164e8d4a51000916115fe91906140f7565b6001840155604080518881529051899133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a36004840154156135f8576135ff565b4360048501555b50504360069092019190915550506001600255505050565b6000613621614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c60209081526040918290208251606081018452815480825260028301549382019390935260039091015492019190915290565b601b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60145481565b60095481565b60105481565b600080601984815481106136e457fe5b60009182526020808320878452601b8252604080852073ffffffffffffffffffffffffffffffffffffffff898116875290845281862060049586029093016003810154815484517f70a082310000000000000000000000000000000000000000000000000000000081523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561378857600080fd5b505afa15801561379c573d6000803e3d6000fd5b505050506040513d60208110156137b257600080fd5b50516002850154909150431180156137ca5750600081115b1561380f5760006137e485600201544387600101546139c4565b5091935061380b925061380491508490506115fe8464e8d4a510006140f7565b8490614171565b9250505b61383d836001015461383764e8d4a510006115fe8688600001546140f790919063ffffffff16565b906144dc565b979650505050505050565b60175481565b6138578161241e565b612b0f816141e5565b3360009081526001602052604090205460ff168061389a5750336138826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6138a357600080fd5b601555565b60016020526000908152604090205460ff1681565b600f818154811061200f57fe5b60125481565b3360009081526001602052604090205460ff168061390a5750336138f26131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61391357600080fd5b601755565b60185481565b3360009081526001602052604090205460ff16806139585750336139406131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61396157600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806139d78989613213565b905060006139fa601e546115fe8a611bc5600954876140f790919063ffffffff16565b90506000613b32600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6957600080fd5b505afa158015613a7d573d6000803e3d6000fd5b505050506040513d6020811015613a9357600080fd5b5051600354604080517f355274ea000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163355274ea91600480820192602092909190829003018186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6020811015613b2a57600080fd5b5051906144dc565b905081811015613b545760009750809650600095506000945060009350613bc8565b613b6e60646115fe601554856140f790919063ffffffff16565b9750819650613b8d60646115fe601654856140f790919063ffffffff16565b9550613ba960646115fe601754856140f790919063ffffffff16565b9450613bc560646115fe601854856140f790919063ffffffff16565b93505b505050939792965093509350565b600d818154811061200f57fe5b601d6020526000908152604090205460ff1681565b601a6020526000908152604090205481565b613c12614661565b73ffffffffffffffffffffffffffffffffffffffff16613c306131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613cb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600e818154811061200f57fe5b60055473ffffffffffffffffffffffffffffffffffffffff1681565b601c6020526000908152604090208054600282015460039092015490919083565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152601c602090815260408083209390941682526001909201909152205490565b3360009081526001602052604090205460ff1680613dc4575033613dac6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613dcd57600080fd5b601855565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b3360009081526001602052604090205460ff1680613e2e575033613e166131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613e3757600080fd5b600354604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015613eab57600080fd5b505af1158015613ebf573d6000803e3d6000fd5b5050505050565b613ece614661565b73ffffffffffffffffffffffffffffffffffffffff16613eec6131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613f6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ae56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806140a15750336140896131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140aa57600080fd5b601655565b3360009081526001602052604090205460ff16806140e95750336140d16131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140f257600080fd5b601255565b60008261410657506000613309565b8282028284828161411357fe5b041461416a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b7b6021913960400191505060405180910390fd5b9392505050565b60008282018381101561416a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000601982815481106141f457fe5b60009182526020808320858452601b825260408085203386529092529220805460049092029092019250156144d7576000614251826001015461383764e8d4a510006115fe876003015487600001546140f790919063ffffffff16565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156142c857600080fd5b505afa1580156142dc573d6000803e3d6000fd5b505050506040513d60208110156142f257600080fd5b5051905080821115614302578091505b81156144b457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b505060105460028401546000911061446d576143d860646115fe601454866140f790919063ffffffff16565b600354604080517f282d3fdf00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163282d3fdf9160448082019260009290919082900301818387803b15801561445457600080fd5b505af1158015614468573d6000803e3d6000fd5b505050505b43600285015560408051848152602081018390528151889233927f3887f2857beaaf367eb618dfb5e22c1ebd74425affb0602c2e9fe126e3f860eb929081900390910190a3505b600384015483546144cf9164e8d4a51000916115fe916140f7565b600184015550505b505050565b60008282111561454d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008082116145c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816145cc57fe5b049392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526144d7908490614700565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526146fa908590614700565b50505050565b6060614762826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166147d89092919063ffffffff16565b8051909150156144d75780806020019051602081101561478157600080fd5b50516144d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614bf9602a913960400191505060405180910390fd5b60606147e784846000856147ef565b949350505050565b60608247101561484a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614b556026913960400191505060405180910390fd5b6148538561499f565b6148be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061492857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016148eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461498a576040519150601f19603f3d011682016040523d82523d6000602084013e61498f565b606091505b509150915061383d8282866149a5565b3b151590565b606083156149b457508161416a565b8251156149c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a28578181015183820152602001614a10565b50505050905090810190601f168015614a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215614a9e579160200282015b82811115614a9e578251825591602001919060010190614a83565b50614aaa929150614acf565b5090565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115614aaa5760008155600101614ad056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c6963617465644d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205be945065af410dcdd28dd012af8e5ba032fa0b35c72e69010c0ddf6c804923d64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x514 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x847BDAA4 GT PUSH2 0x2A1 JUMPI DUP1 PUSH4 0xC6929E53 GT PUSH2 0x16B JUMPI DUP1 PUSH4 0xD49E77CD GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xED9BDEDA GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x12B4 JUMPI DUP1 PUSH4 0xF2FFC22C EQ PUSH2 0x12E7 JUMPI DUP1 PUSH4 0xFB075433 EQ PUSH2 0x1304 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xED9BDEDA EQ PUSH2 0x1279 JUMPI DUP1 PUSH4 0xEDA67048 EQ PUSH2 0x1281 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xDD77B9FD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xDD77B9FD EQ PUSH2 0x1219 JUMPI DUP1 PUSH4 0xDE988524 EQ PUSH2 0x1254 JUMPI DUP1 PUSH4 0xEC12173D EQ PUSH2 0x1271 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xD49E77CD EQ PUSH2 0x11C0 JUMPI DUP1 PUSH4 0xD9608D8A EQ PUSH2 0x11C8 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xCB0B8CA1 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0xCE2529C9 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xCE2529C9 EQ PUSH2 0x113D JUMPI DUP1 PUSH4 0xCF1C316A EQ PUSH2 0x1170 JUMPI DUP1 PUSH4 0xD007DB29 EQ PUSH2 0x11A3 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xCB0B8CA1 EQ PUSH2 0x10ED JUMPI DUP1 PUSH4 0xCBD258B5 EQ PUSH2 0x110A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xC6929E53 EQ PUSH2 0x1056 JUMPI DUP1 PUSH4 0xC749D614 EQ PUSH2 0x105E JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0xC8ED7680 EQ PUSH2 0x1099 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x975532DC GT PUSH2 0x219 JUMPI DUP1 PUSH4 0xB6066962 GT PUSH2 0x1CD JUMPI DUP1 PUSH4 0xBEFF2A53 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xBEFF2A53 EQ PUSH2 0x1014 JUMPI DUP1 PUSH4 0xC56A10FF EQ PUSH2 0x1031 JUMPI DUP1 PUSH4 0xC663BAA6 EQ PUSH2 0x1039 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xB6066962 EQ PUSH2 0xFB0 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0xFCD JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x98969E82 GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x98969E82 EQ PUSH2 0xF52 JUMPI DUP1 PUSH4 0xA02306F9 EQ PUSH2 0xF8B JUMPI DUP1 PUSH4 0xAE169A50 EQ PUSH2 0xF93 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x975532DC EQ PUSH2 0xF42 JUMPI DUP1 PUSH4 0x980C2A98 EQ PUSH2 0xF4A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x8DBB1E3A GT PUSH2 0x270 JUMPI DUP1 PUSH4 0x929C6971 GT PUSH2 0x255 JUMPI DUP1 PUSH4 0x929C6971 EQ PUSH2 0xE96 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0xEC9 JUMPI DUP1 PUSH4 0x95FDF258 EQ PUSH2 0xF3A JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x8DBB1E3A EQ PUSH2 0xE34 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0xE57 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x847BDAA4 EQ PUSH2 0xCB3 JUMPI DUP1 PUSH4 0x8CC883CE EQ PUSH2 0xD56 JUMPI DUP1 PUSH4 0x8D88A90E EQ PUSH2 0xDF9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE2C JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x3C9D9267 GT PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x5C5E490B GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x64482F79 GT PUSH2 0x30E JUMPI DUP1 PUSH4 0x7C39C9C9 GT PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x7C39C9C9 EQ PUSH2 0xC4F JUMPI DUP1 PUSH4 0x82386D58 EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x82796E98 EQ PUSH2 0xCAB JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x64482F79 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xC47 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x6066DEBD GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x6066DEBD EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x6245F084 EQ PUSH2 0xBF7 JUMPI DUP1 PUSH4 0x630B5BA1 EQ PUSH2 0xC14 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x5C5E490B EQ PUSH2 0xAE2 JUMPI DUP1 PUSH4 0x5EAC6239 EQ PUSH2 0xB15 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 GT PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x4DBF85CA GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x4DBF85CA EQ PUSH2 0xA75 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0xAA8 JUMPI DUP1 PUSH4 0x5312EA8E EQ PUSH2 0xAC5 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x485D7D94 EQ PUSH2 0x99F JUMPI DUP1 PUSH4 0x4AF0E3E1 EQ PUSH2 0x9D2 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x3C9D9267 EQ PUSH2 0x8BA JUMPI DUP1 PUSH4 0x3D479CD5 EQ PUSH2 0x8C2 JUMPI DUP1 PUSH4 0x4179B4FB EQ PUSH2 0x8DF JUMPI DUP1 PUSH4 0x46664064 EQ PUSH2 0x8FC JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1EAAA045 GT PUSH2 0x490 JUMPI DUP1 PUSH4 0x2FDA7735 GT PUSH2 0x444 JUMPI DUP1 PUSH4 0x354AFFB7 GT PUSH2 0x429 JUMPI DUP1 PUSH4 0x354AFFB7 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x36EBCDE6 EQ PUSH2 0x87F JUMPI DUP1 PUSH4 0x39B3E826 EQ PUSH2 0x8B2 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x2FDA7735 EQ PUSH2 0x78C JUMPI DUP1 PUSH4 0x30FB8E0E EQ PUSH2 0x7A9 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x245B211D GT PUSH2 0x475 JUMPI DUP1 PUSH4 0x245B211D EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x24B95C3E EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0x2A7B0107 EQ PUSH2 0x6E9 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1EAAA045 EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0x22A376B0 EQ PUSH2 0x6A7 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xA67D518 GT PUSH2 0x4E7 JUMPI DUP1 PUSH4 0x1526FE27 GT PUSH2 0x4CC JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x1D465C82 EQ PUSH2 0x649 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0xA67D518 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x5A8 JUMPI PUSH2 0x514 JUMP JUMPDEST DUP1 PUSH4 0x1B689C0 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x5268CFF EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x9AE4D2C EQ PUSH2 0x583 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1321 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x540 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x138B JUMP JUMPDEST PUSH2 0x571 PUSH2 0x13C9 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13CF JUMP JUMPDEST PUSH2 0x604 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x1B52 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1BCB JUMP JUMPDEST PUSH2 0x540 PUSH2 0x1EFC JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F18 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1FA8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2002 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2020 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x80D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x20AA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2100 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x215A JUMP JUMPDEST PUSH2 0x540 PUSH2 0x2160 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x217C JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x21C4 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x21D1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2227 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x233E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2394 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x241E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2B12 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2C95 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2CED SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2D1D JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2D96 JUMP JUMPDEST PUSH2 0x536 PUSH2 0x2DA3 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x2DC2 JUMP JUMPDEST PUSH2 0x536 PUSH2 0x2EE3 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2FFA JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3042 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x30BB JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x30C1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3117 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x316D JUMP JUMPDEST PUSH2 0x540 PUSH2 0x31F7 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x330F JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3617 JUMP JUMPDEST PUSH2 0xF02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xEDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3673 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP8 DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP7 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH2 0x36C2 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x36C8 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x36CE JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x36D4 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3848 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x384E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3860 JUMP JUMPDEST PUSH2 0x1000 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x571 PUSH2 0x38CA JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38D0 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3918 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x391E JUMP JUMPDEST PUSH2 0x540 PUSH2 0x39A8 JUMP JUMPDEST PUSH2 0x10C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x39C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3BD6 JUMP JUMPDEST PUSH2 0x1000 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BE3 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3C0A JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D04 JUMP JUMPDEST PUSH2 0x540 PUSH2 0x3D11 JUMP JUMPDEST PUSH2 0x11FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x122F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3D4E JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D8A JUMP JUMPDEST PUSH2 0x540 PUSH2 0x3DD2 JUMP JUMPDEST PUSH2 0x571 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DF4 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3EC6 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4067 JUMP JUMPDEST PUSH2 0x536 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x40AF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x135B JUMPI POP CALLER PUSH2 0x1343 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x14 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x19 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD ISZERO PUSH2 0x13BB JUMPI PUSH1 0x3 ADD SLOAD NUMBER SUB SWAP1 POP PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD NUMBER SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x1440 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1456 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP8 MSTORE PUSH1 0x1C SWAP1 SWAP5 MSTORE DUP2 DUP7 KECCAK256 SWAP1 DUP7 MSTORE SWAP5 KECCAK256 DUP3 SLOAD PUSH1 0x4 SWAP1 SWAP5 MUL SWAP1 SWAP2 ADD SWAP5 POP SWAP1 SWAP3 SWAP2 DUP7 GT ISZERO PUSH2 0x1503 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B34 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO PUSH2 0x1543 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP1 SLOAD DUP7 SWAP1 SUB DUP2 SSTORE PUSH2 0x1553 DUP8 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x155C DUP8 PUSH2 0x41E5 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x1AF6 JUMPI DUP3 SLOAD PUSH2 0x156E SWAP1 DUP8 PUSH2 0x44DC JUMP JUMPDEST DUP4 SSTORE PUSH1 0x3 DUP4 ADD SLOAD ISZERO PUSH2 0x158B JUMPI PUSH1 0x3 DUP4 ADD SLOAD NUMBER SUB PUSH1 0x5 DUP5 ADD SSTORE PUSH2 0x1598 JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD NUMBER SUB PUSH1 0x5 DUP5 ADD SSTORE JUMPDEST PUSH1 0xC PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x15A6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD EQ DUP1 PUSH2 0x15C5 JUMPI POP DUP3 PUSH1 0x6 ADD SLOAD NUMBER EQ JUMPDEST ISZERO PUSH2 0x165E JUMPI PUSH2 0x1623 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP12 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x4553 JUMP JUMPDEST DUP7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH1 0xC PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x166C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x16A6 JUMPI POP PUSH1 0xD PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x1693 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x16FD JUMPI PUSH2 0x16C5 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x170B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1745 JUMPI POP PUSH1 0xD PUSH1 0x1 DUP2 SLOAD DUP2 LT PUSH2 0x1732 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x179C JUMPI PUSH2 0x1764 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x2 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x17AA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x17E4 JUMPI POP PUSH1 0xD PUSH1 0x2 DUP2 SLOAD DUP2 LT PUSH2 0x17D1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x183B JUMPI PUSH2 0x1803 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x3 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x1849 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1883 JUMPI POP PUSH1 0xD PUSH1 0x3 DUP2 SLOAD DUP2 LT PUSH2 0x1870 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x18DA JUMPI PUSH2 0x18A2 CALLER PUSH2 0x1604 PUSH1 0x64 PUSH2 0x15FE PUSH1 0xE PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH1 0x64 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x4 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x18E8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x1922 JUMPI POP PUSH1 0xD PUSH1 0x4 DUP2 SLOAD DUP2 LT PUSH2 0x190F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x197F JUMPI PUSH2 0x1942 CALLER PUSH2 0x1604 PUSH2 0x3E8 PUSH2 0x15FE PUSH1 0xE PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH2 0x1659 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1604 PUSH2 0x3E8 PUSH2 0x15FE PUSH1 0xF PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x6 DUP2 SLOAD DUP2 LT PUSH2 0x198D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI POP PUSH1 0xD PUSH1 0x5 DUP2 SLOAD DUP2 LT PUSH2 0x19B4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1A20 JUMPI PUSH2 0x19E7 CALLER PUSH2 0x1604 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0xE PUSH1 0x6 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1659 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH2 0x2710 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x6 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0xC PUSH1 0x7 DUP2 SLOAD DUP2 LT PUSH2 0x1A2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH1 0x5 ADD SLOAD GT ISZERO PUSH2 0x1A98 JUMPI PUSH2 0x1A5F CALLER PUSH2 0x1604 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0xE PUSH1 0x7 DUP2 SLOAD DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xF DUP1 SLOAD PUSH2 0x1A98 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0x1604 SWAP2 PUSH2 0x2710 SWAP2 PUSH2 0x15FE SWAP2 PUSH1 0x7 SWAP1 DUP2 LT PUSH2 0x15E4 JUMPI INVALID JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD DUP4 SLOAD PUSH2 0x1AB3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD DUP9 SWAP2 CALLER SWAP2 PUSH32 0xF279E6A1F5E320CCA91135676D9CB6E44CA8A08C0B88342BCDB1144F6511B568 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 NUMBER PUSH1 0x3 DUP5 ADD SSTORE JUMPDEST POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1B11 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x4 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP4 POP SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B68 PUSH1 0x1 NUMBER SUB NUMBER PUSH2 0x3213 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1B85 JUMPI PUSH1 0x9 SLOAD PUSH2 0x1B7D SWAP1 DUP3 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x13C4 JUMP JUMPDEST PUSH2 0x1B7D PUSH1 0x1E SLOAD PUSH2 0x15FE PUSH1 0x19 PUSH1 0x1 DUP8 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1B9E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD PUSH2 0x1BC5 PUSH1 0x9 SLOAD DUP7 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x40F7 JUMP JUMPDEST PUSH2 0x1BD3 PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BF1 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C73 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1CF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B9C PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1D70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B0B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1D7E JUMPI PUSH2 0x1D7E PUSH2 0x2DA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x13 SLOAD NUMBER GT PUSH2 0x1D91 JUMPI PUSH1 0x13 SLOAD PUSH2 0x1D93 JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x1E SLOAD SWAP1 SWAP2 POP PUSH2 0x1DA3 SWAP1 DUP7 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x19 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 SWAP6 DUP7 ADD SWAP1 SSTORE PUSH1 0x1D DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 OR SWAP1 SSTORE DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD SWAP10 DUP11 MSTORE DUP3 ADD SWAP5 DUP6 MSTORE PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE DUP5 SLOAD SWAP4 DUP5 ADD DUP6 SSTORE SWAP4 SWAP1 MSTORE MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9695 PUSH1 0x4 SWAP1 SWAP3 MUL SWAP2 DUP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP8 AND OR SWAP1 SWAP6 SSTORE SWAP5 MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9696 DUP6 ADD SSTORE MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9697 DUP5 ADD SSTORE POP POP SWAP1 MLOAD PUSH32 0x944998273E477B495144FB8794C914197F3CCB46BE2900F4698FD0EF743C9698 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1F52 JUMPI POP CALLER PUSH2 0x1F3A PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1F9A JUMPI POP CALLER PUSH2 0x1F82 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1FE2 JUMPI POP CALLER PUSH2 0x1FCA PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xE SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x205A JUMPI POP CALLER PUSH2 0x2042 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x20E4 JUMPI POP CALLER PUSH2 0x20CC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x20ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x210A PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x21B6 JUMPI POP CALLER PUSH2 0x219E PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x21BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 SSTORE JUMP JUMPDEST PUSH1 0xB DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x220B JUMPI POP CALLER PUSH2 0x21F3 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xA SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST PUSH2 0x222F PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x224D PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ ISZERO PUSH2 0x22F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2378 JUMPI POP CALLER PUSH2 0x2360 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x23CE JUMPI POP CALLER PUSH2 0x23B6 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x23D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x242D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD NUMBER GT PUSH2 0x244E JUMPI POP PUSH2 0x2B0F JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x24FE JUMPI POP NUMBER PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x2B0F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2519 DUP8 PUSH1 0x2 ADD SLOAD NUMBER DUP10 PUSH1 0x1 ADD SLOAD PUSH2 0x39C4 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x259E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x25E0 PUSH2 0x25D5 DUP8 PUSH2 0x15FE PUSH5 0xE8D4A51000 DUP9 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 DUP10 ADD SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SSTORE NUMBER PUSH1 0x2 DUP9 ADD SSTORE DUP5 ISZERO PUSH2 0x2732 JUMPI PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2732 JUMPI PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x26C6 PUSH1 0x64 PUSH2 0x15FE DUP11 PUSH1 0x4B PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x272D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP3 ISZERO PUSH2 0x2879 JUMPI PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2879 JUMPI PUSH1 0x3 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x280D PUSH1 0x64 PUSH2 0x15FE DUP9 PUSH1 0x2D PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP2 ISZERO PUSH2 0x29C0 JUMPI PUSH1 0x3 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2911 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x29C0 JUMPI PUSH1 0x3 SLOAD PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x2954 PUSH1 0x64 PUSH2 0x15FE DUP8 PUSH1 0x55 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 ISZERO PUSH2 0x2B07 JUMPI PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A58 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x10 SLOAD NUMBER GT PUSH2 0x2B07 JUMPI PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH4 0x282D3FDF SWAP2 AND PUSH2 0x2A9B PUSH1 0x64 PUSH2 0x15FE DUP7 PUSH1 0x5F PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x2B83 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2B99 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD SWAP4 POP SWAP2 SWAP1 PUSH2 0x2BD8 SWAP1 PUSH1 0x64 SWAP1 PUSH2 0x15FE SWAP1 PUSH1 0x4B PUSH2 0x40F7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BF9 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x19 DUP7 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD SSTORE DUP5 SLOAD SWAP1 SWAP2 POP PUSH2 0x2C29 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP5 SLOAD PUSH2 0x2C52 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x45D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP7 SWAP2 CALLER SWAP2 PUSH32 0xBB757047C2B5F3974FE26B7C10F732E7BCE710B0952A71082702781E62AE0595 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C9F PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 ADD SLOAD SWAP2 ADD DUP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FFE JUMPI PUSH2 0x2D15 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x384E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2CF0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2D57 JUMPI POP CALLER PUSH2 0x2D3F PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE SWAP2 KECCAK256 PUSH1 0x3 ADD SSTORE JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FFE JUMPI PUSH2 0x2DBA DUP2 PUSH2 0x241E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2DA9 JUMP JUMPDEST PUSH2 0x2DCA PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DE8 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2E6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2E78 JUMPI PUSH2 0x2E78 PUSH2 0x2DA3 JUMP JUMPDEST PUSH2 0x2EB5 DUP3 PUSH2 0x2EAF PUSH1 0x19 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x2E8C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x1E SLOAD PUSH2 0x44DC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x1E DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2EC9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x2EEB PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2F09 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2F8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3034 JUMPI POP CALLER PUSH2 0x301C PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x303D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x11 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x307C JUMPI POP CALLER PUSH2 0x3064 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3085 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE SWAP2 KECCAK256 PUSH1 0x4 ADD SSTORE JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x30FB JUMPI POP CALLER PUSH2 0x30E3 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xC SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3151 JUMPI POP CALLER PUSH2 0x3139 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x315A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1FFE SWAP1 PUSH1 0xF SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4A63 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x31A7 JUMPI POP CALLER PUSH2 0x318F PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x31B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 LT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x3309 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0x3305 JUMPI PUSH1 0x0 PUSH1 0xB DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3248 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0xA DUP1 SLOAD SWAP1 POP SUB DUP3 GT ISZERO PUSH2 0x3271 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x3309 JUMP JUMPDEST DUP1 DUP6 GT PUSH2 0x32B7 JUMPI PUSH1 0x0 PUSH2 0x32A0 PUSH1 0xA DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x328A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1BC5 DUP9 DUP11 PUSH2 0x44DC JUMP JUMPDEST SWAP1 POP PUSH2 0x32AC DUP5 DUP3 PUSH2 0x4171 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x3309 JUMP JUMPDEST DUP1 DUP7 LT ISZERO PUSH2 0x32FC JUMPI PUSH1 0x0 PUSH2 0x32E7 PUSH1 0xA DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x32D1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1BC5 DUP5 DUP11 PUSH2 0x44DC JUMP JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP2 SWAP1 POP PUSH2 0x32F8 DUP5 DUP3 PUSH2 0x4171 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x322F JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x3380 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SSTORE DUP2 PUSH2 0x33DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BC4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x33E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP9 MSTORE DUP4 DUP9 KECCAK256 SWAP1 DUP11 AND DUP9 MSTORE PUSH1 0x1C DUP7 MSTORE DUP4 DUP9 KECCAK256 SWAP3 DUP9 MSTORE DUP4 DUP9 KECCAK256 PUSH1 0x1 DUP5 ADD SWAP1 SWAP7 MSTORE SWAP3 SWAP1 SWAP7 KECCAK256 SLOAD PUSH1 0x4 SWAP6 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP6 POP SWAP3 SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x3481 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH2 0x34B0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD DUP10 ADD SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP9 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x34CA PUSH1 0x64 PUSH2 0x15FE PUSH1 0x11 SLOAD DUP11 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 SLOAD ADD DUP2 SSTORE PUSH2 0x34D8 DUP9 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x34E1 DUP9 PUSH2 0x41E5 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x3505 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP11 PUSH2 0x4665 JUMP JUMPDEST DUP4 SLOAD PUSH2 0x3512 JUMPI NUMBER PUSH1 0x2 DUP6 ADD SSTORE JUMPDEST PUSH2 0x3542 PUSH2 0x353A PUSH2 0x3533 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0x11 SLOAD DUP13 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP10 SWAP1 PUSH2 0x44DC JUMP JUMPDEST DUP6 SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST DUP1 DUP6 SSTORE PUSH1 0x3 DUP7 ADD SLOAD PUSH2 0x355F SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x3590 PUSH2 0x3588 PUSH2 0x3533 PUSH2 0x2710 PUSH2 0x15FE PUSH1 0x12 SLOAD DUP13 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SLOAD SWAP1 PUSH2 0x4171 JUMP JUMPDEST DUP1 DUP5 SSTORE PUSH1 0x3 DUP7 ADD SLOAD PUSH2 0x35AD SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 SWAP1 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD DUP10 SWAP2 CALLER SWAP2 PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x4 DUP5 ADD SLOAD ISZERO PUSH2 0x35F8 JUMPI PUSH2 0x35FF JUMP JUMPDEST NUMBER PUSH1 0x4 DUP6 ADD SSTORE JUMPDEST POP POP NUMBER PUSH1 0x6 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3621 PUSH2 0x4AAE JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1B PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 POP DUP8 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x19 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x36E4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND DUP8 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP7 KECCAK256 PUSH1 0x4 SWAP6 DUP7 MUL SWAP1 SWAP4 ADD PUSH1 0x3 DUP2 ADD SLOAD DUP2 SLOAD DUP5 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE SWAP4 MLOAD SWAP2 SWAP9 POP SWAP4 SWAP7 SWAP4 SWAP6 SWAP4 SWAP5 SWAP3 SWAP1 SWAP2 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x379C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 DUP6 ADD SLOAD SWAP1 SWAP2 POP NUMBER GT DUP1 ISZERO PUSH2 0x37CA JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0x380F JUMPI PUSH1 0x0 PUSH2 0x37E4 DUP6 PUSH1 0x2 ADD SLOAD NUMBER DUP8 PUSH1 0x1 ADD SLOAD PUSH2 0x39C4 JUMP JUMPDEST POP SWAP2 SWAP4 POP PUSH2 0x380B SWAP3 POP PUSH2 0x3804 SWAP2 POP DUP5 SWAP1 POP PUSH2 0x15FE DUP5 PUSH5 0xE8D4A51000 PUSH2 0x40F7 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x4171 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x383D DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x3837 PUSH5 0xE8D4A51000 PUSH2 0x15FE DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x44DC JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3857 DUP2 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x2B0F DUP2 PUSH2 0x41E5 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x389A JUMPI POP CALLER PUSH2 0x3882 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x38A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x15 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x390A JUMPI POP CALLER PUSH2 0x38F2 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x17 SSTORE JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3958 JUMPI POP CALLER PUSH2 0x3940 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x39D7 DUP10 DUP10 PUSH2 0x3213 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FA PUSH1 0x1E SLOAD PUSH2 0x15FE DUP11 PUSH2 0x1BC5 PUSH1 0x9 SLOAD DUP8 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B32 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x355274EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x355274EA SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x44DC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x3B54 JUMPI PUSH1 0x0 SWAP8 POP DUP1 SWAP7 POP PUSH1 0x0 SWAP6 POP PUSH1 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x3BC8 JUMP JUMPDEST PUSH2 0x3B6E PUSH1 0x64 PUSH2 0x15FE PUSH1 0x15 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP8 POP DUP2 SWAP7 POP PUSH2 0x3B8D PUSH1 0x64 PUSH2 0x15FE PUSH1 0x16 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP PUSH2 0x3BA9 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x17 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP5 POP PUSH2 0x3BC5 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x18 SLOAD DUP6 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0xD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3C12 PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3C30 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3CB2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x200F JUMPI INVALID JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3DC4 JUMPI POP CALLER PUSH2 0x3DAC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3DCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x18 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x3E2E JUMPI POP CALLER PUSH2 0x3E16 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x3E37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2FDE38B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3ECE PUSH2 0x4661 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3EEC PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3F6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3FDA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AE5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x40A1 JUMPI POP CALLER PUSH2 0x4089 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x40AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x16 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x40E9 JUMPI POP CALLER PUSH2 0x40D1 PUSH2 0x31F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x40F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4106 JUMPI POP PUSH1 0x0 PUSH2 0x3309 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x4113 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x416A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B7B PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x416A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x19 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x41F4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0x1B DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x4 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP ISZERO PUSH2 0x44D7 JUMPI PUSH1 0x0 PUSH2 0x4251 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x3837 PUSH5 0xE8D4A51000 PUSH2 0x15FE DUP8 PUSH1 0x3 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x42DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x4302 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x44B4 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x10 SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 LT PUSH2 0x446D JUMPI PUSH2 0x43D8 PUSH1 0x64 PUSH2 0x15FE PUSH1 0x14 SLOAD DUP7 PUSH2 0x40F7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x282D3FDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x282D3FDF SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST NUMBER PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD DUP9 SWAP3 CALLER SWAP3 PUSH32 0x3887F2857BEAAF367EB618DFB5E22C1EBD74425AFFB0602C2E9FE126E3F860EB SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD DUP4 SLOAD PUSH2 0x44CF SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x15FE SWAP2 PUSH2 0x40F7 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x454D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x45C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x45CC JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x44D7 SWAP1 DUP5 SWAP1 PUSH2 0x4700 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x46FA SWAP1 DUP6 SWAP1 PUSH2 0x4700 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4762 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x47D8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x44D7 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x44D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BF9 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x47E7 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x47EF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x484A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B55 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4853 DUP6 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x48BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4928 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x48EB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x498A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x498F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x383D DUP3 DUP3 DUP7 PUSH2 0x49A5 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x49B4 JUMPI POP DUP2 PUSH2 0x416A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x49C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A28 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A10 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A55 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4A9E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4A9E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4A83 JUMP JUMPDEST POP PUSH2 0x4AAA SWAP3 SWAP2 POP PUSH2 0x4ACF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4AAA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4AD0 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734D6173746572427265656465723A3A61 PUSH5 0x643A206C70 KECCAK256 PUSH10 0x7320616C726561647920 PUSH10 0x6E20706F6F6C4D617374 PUSH6 0x724272656564 PUSH6 0x723A3A776974 PUSH9 0x647261773A206E6F74 KECCAK256 PUSH8 0x6F6F644164647265 PUSH20 0x733A20696E73756666696369656E742062616C61 PUSH15 0x636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F774D6173746572427265 PUSH6 0x6465723A3A6E PUSH16 0x6E4475706C6963617465643A20647570 PUSH13 0x6963617465644D617374657242 PUSH19 0x65656465723A3A6465706F7369743A20616D6F PUSH22 0x6E74206D757374206265206772656174657220746861 PUSH15 0x20305361666545524332303A204552 NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A26469706673582212205BE94506 GAS DELEGATECALL LT 0xDC 0xDD 0x28 0xDD ADD 0x2A 0xF8 0xE5 0xBA SUB 0x2F LOG0 0xB3 0x5C PUSH19 0xE69010C0DDF6C804923D64736F6C634300060C STOP CALLER ",
          "sourceMap": "788:28974:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26662:113;;;;;;;;;;;;;;;;-1:-1:-1;26662:113:15;;:::i;:::-;;2696:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6600:93;;;:::i;:::-;;;;;;;;;;;;;;;;27988:397;;;;;;;;;;;;;;;;-1:-1:-1;27988:397:15;;:::i;3798:29::-;;;:::i;18327:5740::-;;;;;;;;;;;;;;;;-1:-1:-1;18327:5740:15;;;;;;;;;;;;;;:::i;3983:26::-;;;;;;;;;;;;;;;;-1:-1:-1;3983:26:15;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4474:34;;;:::i;27532:450::-;;;;;;;;;;;;;;;;-1:-1:-1;27532:450:15;;:::i;6765:842::-;;;;;;;;;;;;;;;;-1:-1:-1;6765:842:15;;;;;;;;;;;;;;;;:::i;2866:28::-;;;:::i;25600:120::-;;;;;;;;;;;;;;;;-1:-1:-1;25600:120:15;;:::i;27412:114::-;;;;;;;;;;;;;;;;-1:-1:-1;27412:114:15;;:::i;29140:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29140:138:15;;-1:-1:-1;29140:138:15;;-1:-1:-1;;;;;29140:138:15:i;3153:34::-;;;;;;;;;;;;;;;;-1:-1:-1;3153:34:15;;:::i;26168:108::-;;;;;;;;;;;;;;;;-1:-1:-1;26168:108:15;;;;:::i;25757:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25757:122:15;;-1:-1:-1;25757:122:15;;-1:-1:-1;;;;;25757:122:15:i;15826:175::-;;;;;;;;;;;;;;;;-1:-1:-1;15826:175:15;;;;:::i;3613:26::-;;;:::i;2930:::-;;;:::i;26313:110::-;;;;;;;;;;;;;;;;-1:-1:-1;26313:110:15;;:::i;3225:33::-;;;;;;;;;;;;;;;;-1:-1:-1;3225:33:15;;:::i;26468:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26468:149:15;;-1:-1:-1;26468:149:15;;-1:-1:-1;;;;;26468:149:15:i;420:150:9:-;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;29011:123:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29011:123:15;;-1:-1:-1;29011:123:15;;-1:-1:-1;;;;;29011:123:15:i;25913:95::-;;;;;;;;;;;;;;;;-1:-1:-1;25913:95:15;;;;:::i;8389:2623::-;;;;;;;;;;;;;;;;-1:-1:-1;8389:2623:15;;:::i;24221:617::-;;;;;;;;;;;;;;;;-1:-1:-1;24221:617:15;;:::i;15637:183::-;;;;;;;;;;;;;;;;-1:-1:-1;15637:183:15;;;;:::i;13967:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13967:156:15;;-1:-1:-1;13967:156:15;;-1:-1:-1;;;;;13967:156:15:i;28391:226::-;;;;;;;;;;;;;;;;-1:-1:-1;28391:226:15;;;;;;;;;;;;;;:::i;3296:37::-;;;;;;;;;;;;;;;;-1:-1:-1;3296:37:15;;:::i;8141:175::-;;;:::i;7711:350::-;;;;;;;;;;;;;;;;-1:-1:-1;7711:350:15;;;;;;;;;;;;;;:::i;1717:145:0:-;;;:::i;29517:109:15:-;;;;;;;;;;;;;;;;-1:-1:-1;29517:109:15;;:::i;28623:225::-;;;;;;;;;;;;;;;;-1:-1:-1;28623:225:15;;;;;;;;;;;;;;:::i;3491:25::-;;;:::i;28854:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28854:151:15;;-1:-1:-1;28854:151:15;;-1:-1:-1;;;;;28854:151:15:i;29284:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29284:114:15;;-1:-1:-1;29284:114:15;;-1:-1:-1;;;;;29284:114:15:i;25473:88::-;;;;;;;;;;;;;;;;-1:-1:-1;25473:88:15;;;;:::i;1085:85:0:-;;;:::i;11179:754:15:-;;;;;;;;;;;;;;;;-1:-1:-1;11179:754:15;;;;;;;:::i;16335:1940::-;;;;;;;;;;;;;;;;-1:-1:-1;16335:1940:15;;;;;;;;;;;;;;:::i;15454:177::-;;;;;;;;;;;;;;;;-1:-1:-1;15454:177:15;;;;:::i;4205:64::-;;;;;;;;;;;;;;;;-1:-1:-1;4205:64:15;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3646:40;;;:::i;3059:31::-;;;:::i;3449:36::-;;;:::i;13105:856::-;;;;;;;;;;;;;;;;-1:-1:-1;13105:856:15;;;;;;;;;:::i;3844:30::-;;;:::i;14129:99::-;;;;;;;;;;;;;;;;-1:-1:-1;14129:99:15;;:::i;26810:112::-;;;;;;;;;;;;;;;;-1:-1:-1;26810:112:15;;:::i;151:42:9:-;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3415:28:15;;;;;;;;;;;;;;;;-1:-1:-1;3415:28:15;;:::i;3522:24::-;;;:::i;27099:112::-;;;;;;;;;;;;;;;;-1:-1:-1;27099:112:15;;:::i;3898:35::-;;;:::i;26040:96::-;;;;;;;;;;;;;;;;-1:-1:-1;26040:96:15;;;;:::i;2770:24::-;;;:::i;11939:1094::-;;;;;;;;;;;;;;;;-1:-1:-1;11939:1094:15;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3339:35;;;;;;;;;;;;;;;;-1:-1:-1;3339:35:15;;:::i;4337:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4337:44:15;;;;:::i;4015:42::-;;;;;;;;;;;;;;;;-1:-1:-1;4015:42:15;;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;3380:29:15:-;;;;;;;;;;;;;;;;-1:-1:-1;3380:29:15;;:::i;2820:22::-;;;:::i;4275:56::-;;;;;;;;;;;;;;;;-1:-1:-1;4275:56:15;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;16007:248;;;;;;;;;;;;;;;;-1:-1:-1;16007:248:15;;;;;;;;;;;:::i;27251:129::-;;;;;;;;;;;;;;;;-1:-1:-1;27251:129:15;;:::i;2984:26::-;;;:::i;3731:30::-;;;:::i;29632:128::-;;;;;;;;;;;;;;;;-1:-1:-1;29632:128:15;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;26956:108:15:-;;;;;;;;;;;;;;;;-1:-1:-1;26956:108:15;;:::i;29404:107::-;;;;;;;;;;;;;;;;-1:-1:-1;29404:107:15;;:::i;26662:113::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26732:25:15::1;:36:::0;26662:113::o;2696:31::-;;;;;;:::o;6600:93::-;6671:8;:15;6600:93;:::o;27988:397::-;28042:7;28085:14;;;:8;:14;;;;;;;;28100:10;28085:26;;;;;;;28125:22;;;;:26;28121:258;;28201:22;;;28186:12;:37;;-1:-1:-1;28237:15:15;;28121:258;28317:22;;;28302:12;:37;;-1:-1:-1;27988:397:15;;;;:::o;3798:29::-;;;;:::o;18327:5740::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;;;;18450:21:15::1;18474:8;18483:4;18474:14;;;;;;;;;::::0;;;::::1;::::0;;;18522;;;:8:::1;:14:::0;;;;;;18537:10:::1;18522:26:::0;;;;;;;;;::::1;18589:20:::0;::::1;::::0;;:14:::1;:20:::0;;;;;;18652:26;;;;;18696:11;;18474:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;18522:26:15;;18589:20;18696:22;-1:-1:-1;18696:22:15::1;18688:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18770:18;::::0;::::1;::::0;18766:185:::1;;18850:10;18834:27;::::0;;;:15:::1;::::0;::::1;:27;::::0;;;;;;:37;;::::1;18804:67:::0;;18909:21:::1;::::0;::::1;::::0;;:31;;::::1;18885:55:::0;;18766:185:::1;18983:20:::0;;:30;;::::1;18960:53:::0;;19024:16:::1;19035:4:::0;19024:10:::1;:16::i;:::-;19050:14;19059:4;19050:8;:14::i;:::-;19079:11:::0;;19075:4986:::1;;19120:11:::0;;:24:::1;::::0;19136:7;19120:15:::1;:24::i;:::-;19106:38:::0;;19162:22:::1;::::0;::::1;::::0;:26;19158:214:::1;;19241:22;::::0;::::1;::::0;19226:12:::1;:37;19208:15;::::0;::::1;:55:::0;19158:214:::1;;;19335:22;::::0;::::1;::::0;19320:12:::1;:37;19302:15;::::0;::::1;:55:::0;19158:214:::1;19425:20;19446:1;19425:23;;;;;;;;;;;;;;;;19406:4;:15;;;:42;:99;;;;19484:4;:21;;;19468:12;:37;19406:99;19385:4478;;;19652:143;19707:10;19740:37;19773:3;19740:28;19752:12;19765:1;19752:15;;;;;;;;;;;;;;;;19740:7;:11;;:28;;;;:::i;:::-;:32:::0;::::1;:37::i;:::-;19652:12:::0;;::::1;;::::0;:143;:25:::1;:143::i;:::-;19868:7;::::0;19910:11:::1;:14:::0;;19813:139:::1;::::0;19868:7:::1;;::::0;19898:36:::1;::::0;19930:3:::1;::::0;19898:27:::1;::::0;19868:7:::1;::::0;19910:14:::1;;;19813:139;19385:4478;;;20013:20;20034:1;20013:23;;;;;;;;;;;;;;;;19994:4;:15;;;:42;;:102;;;;;20075:18;20094:1;20075:21;;;;;;;;;;;;;;;;20056:4;:15;;;:40;;19994:102;19973:3890;;;20225:143;20280:10;20313:37;20346:3;20313:28;20325:12;20338:1;20325:15;;;;;;;20225:143;20441:7;::::0;20483:11:::1;:14:::0;;20386:139:::1;::::0;20441:7:::1;;::::0;20471:36:::1;::::0;20503:3:::1;::::0;20471:27:::1;::::0;20441:7;;20483:14;::::1;;;;19973:3890;20586:20;20607:1;20586:23;;;;;;;;;;;;;;;;20567:4;:15;;;:42;;:102;;;;;20648:18;20667:1;20648:21;;;;;;;;;;;;;;;;20629:4;:15;;;:40;;20567:102;20546:3317;;;20791:143;20846:10;20879:37;20912:3;20879:28;20891:12;20904:1;20891:15;;;;;;;20791:143;21007:7;::::0;21049:11:::1;:14:::0;;20952:139:::1;::::0;21007:7:::1;;::::0;21037:36:::1;::::0;21069:3:::1;::::0;21037:27:::1;::::0;21061:1:::1;::::0;21049:14;::::1;;;;20546:3317;21152:20;21173:1;21152:23;;;;;;;;;;;;;;;;21133:4;:15;;;:42;;:102;;;;;21214:18;21233:1;21214:21;;;;;;;;;;;;;;;;21195:4;:15;;;:40;;21133:102;21112:2751;;;21365:143;21420:10;21453:37;21486:3;21453:28;21465:12;21478:1;21465:15;;;;;;;21365:143;21581:7;::::0;21623:11:::1;:14:::0;;21526:139:::1;::::0;21581:7:::1;;::::0;21611:36:::1;::::0;21643:3:::1;::::0;21611:27:::1;::::0;21635:1:::1;::::0;21623:14;::::1;;;;21112:2751;21726:20;21747:1;21726:23;;;;;;;;;;;;;;;;21707:4;:15;;;:42;;:102;;;;;21788:18;21807:1;21788:21;;;;;;;;;;;;;;;;21769:4;:15;;;:40;;21707:102;21686:2177;;;21932:143;21987:10;22020:37;22053:3;22020:28;22032:12;22045:1;22032:15;;;;;;;21932:143;22148:7;::::0;22190:11:::1;:14:::0;;22093:139:::1;::::0;22148:7:::1;;::::0;22178:36:::1;::::0;22210:3:::1;::::0;22178:27:::1;::::0;22202:1:::1;::::0;22190:14;::::1;;;;21686:2177;22293:20;22314:1;22293:23;;;;;;;;;;;;;;;;22274:4;:15;;;:42;;:102;;;;;22355:18;22374:1;22355:21;;;;;;;;;;;;;;;;22336:4;:15;;;:40;;22274:102;22253:1610;;;22524:144;22579:10;22612:38;22645:4;22612:28;22624:12;22637:1;22624:15;;;;;;;22524:144;22686:140;22741:7;;;;;;;;;;;22771:37;22803:4;22771:27;22783:11;22795:1;22783:14;;;;;;;22253:1610;22887:20;22908:1;22887:23;;;;;;;;;;;;;;;;22868:4;:15;;;:42;;:102;;;;;22949:18;22968:1;22949:21;;;;;;;;;;;;;;;;22930:4;:15;;;:40;;22868:102;22847:1016;;;23079:145;23134:10;23167:39;23200:5;23167:28;23179:12;23192:1;23179:15;;;;;;;23079:145;23297:7;::::0;23339:11:::1;:14:::0;;23242:141:::1;::::0;23297:7:::1;;::::0;23327:38:::1;::::0;23359:5:::1;::::0;23327:27:::1;::::0;23351:1:::1;::::0;23339:14;::::1;;;;22847:1016;23426:20;23447:1;23426:23;;;;;;;;;;;;;;;;23408:4;:15;;;:41;23404:459;;;23544:145;23599:10;23632:39;23665:5;23632:28;23644:12;23657:1;23644:15;;;;;;;23544:145;23762:7;::::0;23804:11:::1;:14:::0;;23707:141:::1;::::0;23762:7:::1;;::::0;23792:38:::1;::::0;23824:5:::1;::::0;23792:27:::1;::::0;23816:1:::1;::::0;23804:14;::::1;;;;23707:141;23910:24;::::0;::::1;::::0;23894:11;;:51:::1;::::0;23940:4:::1;::::0;23894:41:::1;::::0;:15:::1;:41::i;:51::-;23876:15;::::0;::::1;:69:::0;23964:35:::1;::::0;;;;;;;23985:4;;23973:10:::1;::::0;23964:35:::1;::::0;;;;::::1;::::0;;::::1;24038:12;24013:22;::::0;::::1;:37:::0;19075:4986:::1;-1:-1:-1::0;;1645:1:8;2580:7;:22;-1:-1:-1;;;;;18327:5740:15:o;3983:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3983:26:15;;;:::o;4474:34::-;;;;:::o;27532:450::-;27597:7;27616:18;27637:45;27666:1;27651:12;:16;27669:12;27637:13;:45::i;:::-;27616:66;-1:-1:-1;27696:9:15;27692:284;;27743:16;;27728:32;;:10;;:14;:32::i;:::-;27721:39;;;;;27692:284;27814:151;27949:15;;27814:109;27893:8;27909:1;27902:4;:8;27893:18;;;;;;;;;;;;;;;;;;:29;;;27814:53;27850:16;;27814:10;:35;;:53;;;;:::i;:::-;:78;;:109::i;6765:842::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5003:23:15::1;::::0;::::1;;::::0;;;:13:::1;:23;::::0;;;;;6895:8;;5003:23:::1;;:32;4995:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6936:26:::2;::::0;::::2;;::::0;;;:7:::2;:26;::::0;;;;;:31;6915:119:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7048:11;7044:59;;;7075:17;:15;:17::i;:::-;7112:23;7165:11;;7150:12;:26;:55;;7194:11;;7150:55;;;7179:12;7150:55;7233:15;::::0;7112:93;;-1:-1:-1;7233:32:15::2;::::0;7253:11;7233:19:::2;:32::i;:::-;7215:15;:50:::0;7304:8:::2;:15:::0;;7275:26:::2;::::0;;::::2;;::::0;;;:7:::2;:26;::::0;;;;;;;7322:1:::2;7304:19:::0;;::::2;7275:48:::0;;7333:13:::2;:23:::0;;;;;:30;;;::::2;::::0;::::2;::::0;;7400:190;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;;;;;;;;;;;;;;7373:227;;;;::::2;::::0;;;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;::::2;;::::0;;;;;;;;;;;;;;-1:-1:-1;;7373:227:15;;;;;;;6765:842::o;2866:28::-;;;;;;:::o;25600:120::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25679:21:15::1;:34:::0;25600:120::o;27412:114::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27492:11:15::1;:27:::0;27412:114::o;29140:138::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29247:24:15;;::::1;::::0;:12:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;29140:138:::0;:::o;3153:34::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3153:34:15;:::o;26168:108::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26244:11:15::1;:25:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26168:108::o;25757:122::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25842:30:15;;::::1;::::0;:16:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;15826:175::-:0;15884:7;15903:29;;:::i;:::-;-1:-1:-1;;15935:21:15;;;;;;:14;:21;;;;;;;;;15903:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15826:175::o;3613:26::-;;;;:::o;2930:::-;;;;;;:::o;26313:110::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26387:16:15::1;:29:::0;26313:110::o;3225:33::-;;;;;;;;;;26468:149;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26577:33:15;;::::1;::::0;:17:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;420:150:9:-:0;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;29011:123:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29096:31:15;;::::1;::::0;:18:::1;::::0;:31:::1;::::0;::::1;::::0;::::1;:::i;25913:95::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25979:13:15::1;:22:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25913:95::o;8389:2623::-;8440:21;8464:8;8473:4;8464:14;;;;;;;;;;;;;;;;;;8440:38;;8508:4;:20;;;8492:12;:36;8488:73;;8544:7;;;8488:73;8589:12;;:37;;;;;;8620:4;8589:37;;;;;;8570:16;;8589:12;;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8589:37:15;;-1:-1:-1;8640:13:15;8636:99;;-1:-1:-1;8692:12:15;8669:20;;;;:35;8718:7;;8636:99;8744:22;8776:25;8811:21;8842:22;8874:27;9071:66;9085:4;:20;;;9107:12;9121:4;:15;;;9071:13;:66::i;:::-;9147:8;;:47;;;;;;9169:4;9147:47;;;;;;;;;;;;8911:226;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;-1:-1:-1;9147:8:15;;;:13;;:47;;;;;:8;;:47;;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9231:93;9273:41;9305:8;9273:27;9295:4;9273:17;:21;;:27;;;;:::i;:41::-;9231:24;;;;;:28;:93::i;:::-;9204:24;;;:120;9357:12;9334:20;;;:35;9383:18;;9379:389;;9417:8;;9439:7;;9417:47;;;;;;:8;9439:7;;;9417:47;;;;;;;;;;;;:8;;;;;:13;;:47;;;;;:8;;:47;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9638:21;;9622:12;:37;9618:140;;9679:8;;9701:7;;9679:8;;;;;:13;;9701:7;9711:31;9738:3;9711:22;:14;9730:2;9711:18;:22::i;:31::-;9679:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:140;9781:17;;9777:453;;9814:8;;9828:13;;9814:43;;;;;;:8;9828:13;;;9814:43;;;;;;;;;;;;:8;;;;;:13;;:43;;;;;:8;;:43;;;;;;;:8;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10095:21;;10079:12;:37;10075:145;;10136:8;;10158:13;;10136:8;;;;;:13;;10158;10174:30;10200:3;10174:21;:13;10192:2;10174:17;:21::i;:30::-;10136:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10075:145;10243:18;;10239:354;;10277:8;;10291:11;;10277:42;;;;;;:8;10291:11;;;10277:42;;;;;;;;;;;;:8;;;;;:13;;:42;;;;;:8;;:42;;;;;;;:8;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10459:21;;10443:12;:37;10439:144;;10500:8;;10522:11;;10500:8;;;;;:13;;10522:11;10536:31;10563:3;10536:22;:14;10555:2;10536:18;:22::i;:31::-;10500:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10439:144;10606:23;;10602:404;;10645:8;;10659:11;;10645:47;;;;;;:8;10659:11;;;10645:47;;;;;;;;;;;;:8;;;;;:13;;:47;;;;;:8;;:47;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10867:21;;10851:12;:37;10847:149;;10908:8;;10930:11;;10908:8;;;;;:13;;10930:11;10944:36;10976:3;10944:27;:19;10968:2;10944:23;:27::i;:36::-;10908:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10847:149;8389:2623;;;;;;;;;:::o;24221:617::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;;;;24292:21:15::1;24316:8;24325:4;24316:14;;;;;;;;;::::0;;;::::1;::::0;;;24364;;;:8:::1;:14:::0;;;;;;24379:10:::1;24364:26:::0;;;;;;;;24493:11;;24316:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;24364:26:15;24316:14;24493:28:::1;::::0;24517:3:::1;::::0;24493:19:::1;::::0;24509:2:::1;24493:15;:19::i;:28::-;24470:51;;24531:17;24551:28;24575:3;24551:19;24567:2;24551:4;:11;;;:15;;:19;;;;:::i;:28::-;24603:1;24589:15:::0;;;24614::::1;::::0;::::1;:19:::0;24643:12;;24531:48;;-1:-1:-1;24643:60:15::1;::::0;:12:::1;;24677:10;24690:12:::0;24643:25:::1;:60::i;:::-;24747:7;::::0;24713:12;;:54:::1;::::0;24747:7:::1;24713:12:::0;;::::1;::::0;24747:7:::1;24757:9:::0;24713:25:::1;:54::i;:::-;24782:49;::::0;;;;;;;24812:4;;24800:10:::1;::::0;24782:49:::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;;1645:1:8;2580:7;:22;-1:-1:-1;;;24221:617:15:o;15637:183::-;15701:7;15720:29;;:::i;:::-;-1:-1:-1;;15752:21:15;;;;;;:14;:21;;;;;;;;;15720:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:183::o;13967:156::-;14035:9;14030:87;14054:5;:12;14050:1;:16;14030:87;;;14085:21;14097:5;14103:1;14097:8;;;;;;;;;;;;;;14085:11;:21::i;:::-;14068:3;;14030:87;;28391:226;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28524:21:15::1;28548:14:::0;;;:8:::1;:14;::::0;;;;;;;:21:::1;::::0;;::::1;::::0;;;;;;;28579:22:::1;;:31:::0;28391:226::o;3296:37::-;;;;;;;;;;8141:175;8202:8;:15;8185:14;8227:83;8255:6;8249:3;:12;8227:83;;;8284:15;8295:3;8284:10;:15::i;:::-;8263:5;;8227:83;;7711:350;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7838:11:15::1;7834:59;;;7865:17;:15;:17::i;:::-;7920:85;7984:11;7920:46;7940:8;7949:4;7940:14;;;;;;;;;;;;;;;;;;:25;;;7920:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:85::i;:::-;7902:15;:103;;;;8043:11;8015:8;8024:4;8015:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;7711:350:::0;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;29517:109:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29595:10:15::1;:24:::0;29517:109::o;28623:225::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28755:21:15::1;28779:14:::0;;;:8:::1;:14;::::0;;;;;;;:21:::1;::::0;;::::1;::::0;;;;;;;28810:22:::1;;:31:::0;28623:225::o;3491:25::-;;;;:::o;28854:151::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28963:35:15;;::::1;::::0;:20:::1;::::0;:35:::1;::::0;::::1;::::0;::::1;:::i;29284:114::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29369:22:15;;::::1;::::0;:11:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;25473:88::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25536:7:15::1;:18:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25473:88::o;1085:85:0:-;1131:7;1157:6;;;1085:85;:::o;11179:754:15:-;11338:11;;11275:7;;;;11330:19;;11326:33;;;11358:1;11351:8;;;;;11326:33;11375:9;11370:533;11394:16;:23;11390:27;;11370:533;;;11438:16;11457;11474:1;11457:19;;;;;;;;;;;;;;;;11438:38;;11523:1;11498:17;:24;;;;:26;11494:1;:30;11490:44;;;11533:1;11526:8;;;;;;;11490:44;11560:8;11553:3;:15;11549:144;;11588:9;11600:40;11619:17;11637:1;11619:20;;;;;;;;;;;;;;;;;;11600:14;:3;11608:5;11600:7;:14::i;:40::-;11588:52;-1:-1:-1;11665:13:15;:6;11588:52;11665:10;:13::i;:::-;11658:20;;;;;;;;11549:144;11719:8;11711:5;:16;11707:186;;;11747:9;11759:45;11783:17;11801:1;11783:20;;;;;;;;;;;;;;;;;;11759:19;:8;11772:5;11759:12;:19::i;:45::-;11830:8;;-1:-1:-1;11830:8:15;;11747:57;-1:-1:-1;11865:13:15;:6;11747:57;11865:10;:13::i;:::-;11856:22;;11707:186;;-1:-1:-1;11419:3:15;;11370:533;;;-1:-1:-1;11920:6:15;-1:-1:-1;11179:754:15;;;;;:::o;16335:1940::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:18;;16478:11:15;16457:111:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16579:21;16603:8;16612:4;16603:14;;;;;;;;;::::0;;;::::1;::::0;;;16651;;;:8:::1;:14:::0;;;;;;16666:10:::1;16651:26:::0;;;;;;;;;16726:7:::1;::::0;16651:26:::1;16726:7:::0;;::::1;16711:23:::0;;;;;16775:20;;::::1;::::0;;:14:::1;:20:::0;;;;;16838:26;;;;;;16726:7;16879:15;::::1;:27:::0;;;;;;;;16603:14:::1;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;16711:23:15;16775:20;;16838:26;16879:31;16875:424:::1;;16972:10;16956:27;::::0;;;:15:::1;::::0;::::1;:27;::::0;;;;;;:37;::::1;16926:67:::0;;17031:21:::1;::::0;::::1;::::0;;:31;::::1;17007:55:::0;;16875:424:::1;;;17139:10;17123:27;::::0;;;:15:::1;::::0;;::::1;:27;::::0;;;;;;;:37;::::1;17093:67:::0;;17196:19:::1;::::0;::::1;::::0;;:23;;::::1;17174:45:::0;;17257:21:::1;::::0;::::1;::::0;;:31;::::1;17233:55:::0;;16875:424:::1;17379:32;17407:3;17379:23;17391:10;;17379:7;:11;;:23;;;;:::i;:32::-;17344:20:::0;;:67:::1;17309:102:::0;;17422:16:::1;17433:4:::0;17422:10:::1;:16::i;:::-;17448:14;17457:4;17448:8;:14::i;:::-;17472:12:::0;;:120:::1;::::0;:12:::1;;17523:10;17556:4;17575:7:::0;17472:29:::1;:120::i;:::-;17606:11:::0;;17602:84:::1;;17663:12;17638:22;::::0;::::1;:37:::0;17602:84:::1;17709:86;17738:47;17750:34;17778:5;17750:23;17762:10;;17750:7;:11;;:23;;;;:::i;:34::-;17738:7:::0;;:11:::1;:47::i;:::-;17709:11:::0;;;:15:::1;:86::i;:::-;17695:100:::0;;;17839:24:::1;::::0;::::1;::::0;17823:51:::1;::::0;17869:4:::1;::::0;17823:41:::1;::::0;17695:100;17823:15:::1;:41::i;:51::-;17805:4;:15;;:69;;;;17898:85;17927:46;17939:33;17966:5;17939:22;17951:9;;17939:7;:11;;:22;;;;:::i;17927:46::-;17898:11:::0;;;:15:::1;:85::i;:::-;17884:99:::0;;;18027:24:::1;::::0;::::1;::::0;18011:51:::1;::::0;18057:4:::1;::::0;18011:41:::1;::::0;17884:99;18011:15:::1;:41::i;:51::-;17993:15;::::0;::::1;:69:::0;18077:34:::1;::::0;;;;;;;18097:4;;18085:10:::1;::::0;18077:34:::1;::::0;;;;::::1;::::0;;::::1;18125:22;::::0;::::1;::::0;:26;18121:102:::1;;;;;18200:12;18175:22;::::0;::::1;:37:::0;18121:102:::1;-1:-1:-1::0;;18256:12:15::1;18232:21;::::0;;::::1;:36:::0;;;;-1:-1:-1;;1645:1:8;2580:7;:22;-1:-1:-1;;;16335:1940:15:o;15454:177::-;15515:7;15534:29;;:::i;:::-;-1:-1:-1;;15566:21:15;;;;;;:14;:21;;;;;;;;;15534:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15454:177::o;4205:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3646:40::-;;;;:::o;3059:31::-;;;;:::o;3449:36::-;;;;:::o;13105:856::-;13204:7;13227:21;13251:8;13260:4;13251:14;;;;;;;;;;;;;;;;13299;;;:8;:14;;;;;;:21;;;;;;;;;;;;13251:14;;;;;;;13360:24;;;;13413:12;;:37;;;;;13444:4;13413:37;;;;;;;;;13251:14;;-1:-1:-1;13299:21:15;;13360:24;;13251:14;;13413:12;;;;;:22;;:37;;;;;13251:14;;13413:37;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13413:37:15;13479:20;;;;13413:37;;-1:-1:-1;13464:12:15;:35;:51;;;;;13514:1;13503:8;:12;13464:51;13460:411;;;13531:25;13600:128;13631:4;:20;;;13669:12;13699:4;:15;;;13600:13;:128::i;:::-;-1:-1:-1;13570:158:15;;-1:-1:-1;13764:96:15;;-1:-1:-1;13805:41:15;;-1:-1:-1;13837:8:15;;-1:-1:-1;13805:27:15;13570:158;13827:4;13805:21;:27::i;:41::-;13764:19;;:23;:96::i;:::-;13742:118;;13460:411;;13887:67;13938:4;:15;;;13887:46;13928:4;13887:36;13903:19;13887:4;:11;;;:15;;:36;;;;:::i;:46::-;:50;;:67::i;:::-;13880:74;13105:856;-1:-1:-1;;;;;;;13105:856:15:o;3844:30::-;;;;:::o;14129:99::-;14181:16;14192:4;14181:10;:16::i;:::-;14207:14;14216:4;14207:8;:14::i;26810:112::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26886:15:15::1;:29:::0;26810:112::o;151:42:9:-;;;;;;;;;;;;;;;:::o;3415:28:15:-;;;;;;;;;;3522:24;;;;:::o;27099:112::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27175:15:15::1;:29:::0;27099:112::o;3898:35::-;;;;:::o;26040:96::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26108:11:15::1;:21:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26040:96::o;2770:24::-;;;;;;:::o;11939:1094::-;12099:14;12127:17;12158:13;12185:14;12213:19;12257:18;12278:25;12292:5;12299:3;12278:13;:25::i;:::-;12257:46;;12313:14;12342:100;12413:15;;12342:49;12379:11;12342:32;12357:16;;12342:10;:14;;:32;;;;:::i;:100::-;12313:129;;12452:30;12485:42;12504:8;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12504:22:15;12485:8;;:14;;;;;;;;:8;;;;;:12;;:14;;;;;12504:22;;12485:14;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12485:14:15;;:18;:42::i;:::-;12452:75;;12567:6;12542:22;:31;12538:489;;;12598:1;12589:10;;12625:22;12613:34;;12669:1;12661:9;;12693:1;12684:10;;12722:1;12708:15;;12538:489;;;12763:36;12795:3;12763:27;12774:15;;12763:6;:10;;:27;;;;:::i;:36::-;12754:45;;12825:6;12813:18;;12853:35;12884:3;12853:26;12864:14;;12853:6;:10;;:26;;;;:::i;:35::-;12845:43;;12911:36;12943:3;12911:27;12922:15;;12911:6;:10;;:27;;;;:::i;:36::-;12902:45;;12975:41;13012:3;12975:32;12986:20;;12975:6;:10;;:32;;;;:::i;:41::-;12961:55;;12538:489;11939:1094;;;;;;;;;;;;:::o;3339:35::-;;;;;;;;;;4337:44;;;;;;;;;;;;;;;:::o;4015:42::-;;;;;;;;;;;;;:::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;3380:29:15:-;;;;;;;;;;2820:22;;;;;;:::o;4275:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16007:248::-;16162:21;;;;16106:7;16162:21;;;:14;:21;;;;;;;;16205:25;;;;;;:17;;;;:25;;;;;;16007:248::o;27251:129::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27335:20:15::1;:38:::0;27251:129::o;2984:26::-;;;;;;:::o;3731:30::-;;;;:::o;29632:128::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29716:8:15::1;::::0;:37:::1;::::0;;;;;:8:::1;:37:::0;;::::1;;::::0;::::1;::::0;;;:8;;;::::1;::::0;:26:::1;::::0;:37;;;;;:8:::1;::::0;:37;;;;;;;:8;;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29632:128:::0;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;26956:108:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27030:14:15::1;:27:::0;26956:108::o;29404:107::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29481:9:15::1;:23:::0;29404:107::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;3538:215;-1:-1:-1;;;3538:215:1:o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14288:1160:15;14339:21;14363:8;14372:4;14363:14;;;;;;;;;;;;;;;;14411;;;:8;:14;;;;;;14426:10;14411:26;;;;;;;14452:11;;14363:14;;;;;;;;-1:-1:-1;14452:15:15;14448:994;;14483:15;14517:110;14594:4;:15;;;14517:51;14563:4;14517:41;14533:4;:24;;;14517:4;:11;;;:15;;:41;;;;:::i;:110::-;14661:8;;:33;;;;;;14688:4;14661:33;;;;;;14483:144;;-1:-1:-1;14641:17:15;;14661:8;;;;;:18;;:33;;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14661:33:15;;-1:-1:-1;14713:19:15;;;14709:77;;;14762:9;14752:19;;14709:77;14804:11;;14800:548;;14835:8;;:38;;;;;;14853:10;14835:38;;;;;;;;;;;;:8;;;;;:17;;:38;;;;;;;;;;;;;;;:8;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14961:21:15;;14935:22;;;;14891:18;;-1:-1:-1;14931:259:15;;15019:93;15087:3;15019:38;15031:25;;15019:7;:11;;:38;;;;:::i;:93::-;15134:8;;:37;;;;;;15148:10;15134:37;;;;;;;;;;;;15006:106;;-1:-1:-1;15134:8:15;;;;;:13;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:259;15233:12;15208:22;;;:37;15269:64;;;;;;;;;;;;;;15307:4;;15295:10;;15269:64;;;;;;;;;;;14800:548;;15396:24;;;;15380:11;;:51;;15426:4;;15380:41;;:15;:41::i;:51::-;15362:15;;;:69;-1:-1:-1;;14448:994:15;14288:1160;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;704:175:4:-;813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:23;813:58;;;786:86;;806:5;;786:19;:86::i;598:104:6:-;685:10;598:104;:::o;885:203:4:-;1012:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:27;1012:68;;;985:96;;1005:5;;985:19;:96::i;:::-;885:203;;;;:::o;2967:751::-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:4;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:4;3616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3581:193:5;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;3581:193;-1:-1:-1;;;;3581:193:5:o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:5;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract GovernanceToken\",\"name\":\"_govToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_liquidityaddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_comfundaddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_founderaddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rewardPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_halvingAfterBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_userDepFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_devDepFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_rewardMultiplier\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_blockDeltaStartStage\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_blockDeltaEndStage\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_userFeeStage\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_devFeeStage\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"name\":\"SendGovernanceTokenReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FINISH_BONUS_AT_BLOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"HALVING_AT_BLOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERCENT_FOR_COM\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERCENT_FOR_DEV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERCENT_FOR_FOUNDERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERCENT_FOR_LP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERCENT_LOCK_BONUS_REWARD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"REWARD_MULTIPLIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_PER_BLOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"START_BLOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toAdd\",\"type\":\"address\"}],\"name\":\"addAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockDeltaEndStage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockDeltaStartStage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newFinish\",\"type\":\"uint256\"}],\"name\":\"bonusFinishUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_pids\",\"type\":\"uint256[]\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newCom\",\"type\":\"address\"}],\"name\":\"comUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comfundaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_ref\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devDepFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"devFeeStage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFounder\",\"type\":\"address\"}],\"name\":\"founderUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"founderaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getGlobalAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getGlobalRefAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid1\",\"type\":\"uint256\"}],\"name\":\"getNewRewardPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"getPoolReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forDev\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forFarmer\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forLP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forCom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forFounders\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user2\",\"type\":\"address\"}],\"name\":\"getRefValueOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getTotalRefs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govToken\",\"outputs\":[{\"internalType\":\"contract GovernanceToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_newHalving\",\"type\":\"uint256[]\"}],\"name\":\"halvingUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlock\",\"type\":\"uint256\"}],\"name\":\"lockUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newcomlock\",\"type\":\"uint256\"}],\"name\":\"lockcomUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newdevlock\",\"type\":\"uint256\"}],\"name\":\"lockdevUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newfounderlock\",\"type\":\"uint256\"}],\"name\":\"lockfounderUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlplock\",\"type\":\"uint256\"}],\"name\":\"locklpUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newLP\",\"type\":\"address\"}],\"name\":\"lpUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"poolExistence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"poolId1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accGovTokenPerShare\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"reclaimTokenOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_toRemove\",\"type\":\"address\"}],\"name\":\"removeAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"reviseDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"reviseWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_newMulReward\",\"type\":\"uint256[]\"}],\"name\":\"rewardMulUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newReward\",\"type\":\"uint256\"}],\"name\":\"rewardUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_devDepFees\",\"type\":\"uint256\"}],\"name\":\"setDevDepFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_devFees\",\"type\":\"uint256[]\"}],\"name\":\"setDevFeeStage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_blockEnds\",\"type\":\"uint256[]\"}],\"name\":\"setStageEnds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_blockStarts\",\"type\":\"uint256[]\"}],\"name\":\"setStageStarts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_usrDepFees\",\"type\":\"uint256\"}],\"name\":\"setUserDepFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_userFees\",\"type\":\"uint256[]\"}],\"name\":\"setUserFeeStage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newstarblock\",\"type\":\"uint256\"}],\"name\":\"starblockUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"userDelta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"userDepFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"userFeeStage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userGlobalInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"globalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReferals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"globalRefAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebtAtBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastWithdrawBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"firstDepositBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockdelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastDepositBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_ref\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MasterBreeder.sol\":\"MasterBreeder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]},\"contracts/Authorizable.sol\":{\"keccak256\":\"0xc15372825a5b752d8515abd72d54cbf8556b2b611b26e5f2b6eac9cfdba3e95f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9ffa0813c53c5ab639eecabc06c5f4bc272a378ae3d94583f6569e1de1c5124\",\"dweb:/ipfs/QmWWxnv88Pd6YtFGjgHYtL5t24m2sDrVHV6CrKETZwi2Ci\"]},\"contracts/GovernanceToken.sol\":{\"keccak256\":\"0x21d5613ae6c463c7d677d0f51453f5324e44e11b33f4101b9d584e14df87f9de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc78974f53f2a8aaf8e445fc063b65b70499a903d03382149ff740d0770181d8\",\"dweb:/ipfs/QmZZ4WqDQSANnfDY6mGXDKDeaDqGeb3T3TfU73eifbm6nq\"]},\"contracts/MasterBreeder.sol\":{\"keccak256\":\"0xd9eabf313a1f5c38c224f40d158ecbb680ac68e7bff46e138c5cd98f3b26cb42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b04e9d92824095d33e7a183074f14667bfe3df24f2a2a30c12c7c44c3c1d4b1\",\"dweb:/ipfs/QmbvB7CA6TQAAEwm5KAda32gNDxHebK2ZEF1L53ANfvFX6\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "contract GovernanceToken",
              "name": "_govToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_liquidityaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_comfundaddr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_founderaddr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_rewardPerBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_startBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_halvingAfterBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_userDepFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_devDepFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "_rewardMultiplier",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_blockDeltaStartStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_blockDeltaEndStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_userFeeStage",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "_devFeeStage",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "EmergencyWithdraw",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "lockAmount",
              "type": "uint256"
            }
          ],
          "name": "SendGovernanceTokenReward",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Withdraw",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "FINISH_BONUS_AT_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "HALVING_AT_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_COM",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_DEV",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_FOUNDERS",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_FOR_LP",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERCENT_LOCK_BONUS_REWARD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "REWARD_MULTIPLIER",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "REWARD_PER_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "START_BLOCK",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "contract IERC20",
              "name": "_lpToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "add",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toAdd",
              "type": "address"
            }
          ],
          "name": "addAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "authorized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "blockDeltaEndStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "blockDeltaStartStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newFinish",
              "type": "uint256"
            }
          ],
          "name": "bonusFinishUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "claimReward",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_pids",
              "type": "uint256[]"
            }
          ],
          "name": "claimRewards",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newCom",
              "type": "address"
            }
          ],
          "name": "comUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "comfundaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            }
          ],
          "name": "dev",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "devDepFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "devFeeStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "devaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "emergencyWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newFounder",
              "type": "address"
            }
          ],
          "name": "founderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "founderaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalRefAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            }
          ],
          "name": "getMultiplier",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "pid1",
              "type": "uint256"
            }
          ],
          "name": "getNewRewardPerBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            }
          ],
          "name": "getPoolReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "forDev",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFarmer",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forLP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forCom",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFounders",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_user2",
              "type": "address"
            }
          ],
          "name": "getRefValueOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getTotalRefs",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract GovernanceToken",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newHalving",
              "type": "uint256[]"
            }
          ],
          "name": "halvingUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityaddr",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "lockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newcomlock",
              "type": "uint256"
            }
          ],
          "name": "lockcomUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newdevlock",
              "type": "uint256"
            }
          ],
          "name": "lockdevUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newfounderlock",
              "type": "uint256"
            }
          ],
          "name": "lockfounderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlplock",
              "type": "uint256"
            }
          ],
          "name": "locklpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newLP",
              "type": "address"
            }
          ],
          "name": "lpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "massUpdatePools",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "pendingReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolExistence",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolId1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "poolInfo",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "lpToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastRewardBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "accGovTokenPerShare",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "reclaimTokenOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_toRemove",
              "type": "address"
            }
          ],
          "name": "removeAuthorized",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseDeposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newMulReward",
              "type": "uint256[]"
            }
          ],
          "name": "rewardMulUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newReward",
              "type": "uint256"
            }
          ],
          "name": "rewardUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "set",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_devDepFees",
              "type": "uint256"
            }
          ],
          "name": "setDevDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_devFees",
              "type": "uint256[]"
            }
          ],
          "name": "setDevFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockEnds",
              "type": "uint256[]"
            }
          ],
          "name": "setStageEnds",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockStarts",
              "type": "uint256[]"
            }
          ],
          "name": "setStageStarts",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_usrDepFees",
              "type": "uint256"
            }
          ],
          "name": "setUserDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_userFees",
              "type": "uint256[]"
            }
          ],
          "name": "setUserFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newstarblock",
              "type": "uint256"
            }
          ],
          "name": "starblockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalAllocPoint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "updatePool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "usdOracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "userDelta",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "userDepFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "userFeeStage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "userGlobalInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "globalAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalReferals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "globalRefAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "userInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardDebtAtBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastWithdrawBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "firstDepositBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blockdelta",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastDepositBlock",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040526000601e553480156200001657600080fd5b50604051620053be380380620053be83398181016040526101e08110156200003d57600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01805199519b9d9a9c989b979a9699959894979396929591948301929184640100000000821115620000a457600080fd5b908301906020820185811115620000ba57600080fd5b8251866020820283011164010000000082111715620000d857600080fd5b82525081516020918201928201910280838360005b8381101562000107578181015183820152602001620000ed565b50505050905001604052602001805160405193929190846401000000008211156200013157600080fd5b9083019060208201858111156200014757600080fd5b82518660208202830111640100000000821117156200016557600080fd5b82525081516020918201928201910280838360005b83811015620001945781810151838201526020016200017a565b5050505090500160405260200180516040519392919084640100000000821115620001be57600080fd5b908301906020820185811115620001d457600080fd5b8251866020820283011164010000000082111715620001f257600080fd5b82525081516020918201928201910280838360005b838110156200022157818101518382015260200162000207565b50505050905001604052602001805160405193929190846401000000008211156200024b57600080fd5b9083019060208201858111156200026157600080fd5b82518660208202830111640100000000821117156200027f57600080fd5b82525081516020918201928201910280838360005b83811015620002ae57818101518382015260200162000294565b5050505090500160405260200180516040519392919084640100000000821115620002d857600080fd5b908301906020820185811115620002ee57600080fd5b82518660208202830111640100000000821117156200030c57600080fd5b82525081516020918201928201910280838360005b838110156200033b57818101518382015260200162000321565b5050505090500160405250505060006200035a6200060860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016002819055508e600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960098190555088601381905550866011819055508560128190555084600a9080519060200190620004a3929190620006ce565b508351620004b990600c906020870190620006ce565b508251620004cf90600d906020860190620006ce565b508151620004e590600e906020850190620006ce565b508051620004fb90600f906020840190620006ce565b5060005b600a54600019018110156200058f5760006200054c6001620005388d62000538866001018f6200060c60201b620040f71790919060201c565b6200067360201b620041711790919060201c565b600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90191909155919091019050620004ff565b50620005b789620005386001600a80549050038b6200060c60201b620040f71790919060201c565b6010555050600b80546001810182556000919091526000197f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015550620007359b505050505050505050505050565b3390565b6000826200061d575060006200066d565b828202828482816200062b57fe5b04146200066a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200539d6021913960400191505060405180910390fd5b90505b92915050565b6000828201838110156200066a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200070c579160200282015b828111156200070c578251825591602001919060010190620006ef565b506200071a9291506200071e565b5090565b5b808211156200071a57600081556001016200071f565b614c5880620007456000396000f3fe608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861790558051608081018252938452908301998a5282019485526060820181815284549384018555939052517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600490920291820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919097161790955594517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696850155517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9697840155505090517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969890910155565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff1680611f52575033611f3a6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611f5b57600080fd5b601055565b3360009081526001602052604090205460ff1680611f9a575033611f826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611fa357600080fd5b601355565b3360009081526001602052604090205460ff1680611fe2575033611fca6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611feb57600080fd5b8051611ffe90600e906020840190614a63565b5050565b600a818154811061200f57fe5b600091825260209091200154905081565b3360009081526001602052604090205460ff168061205a5750336120426131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61206357600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806120e45750336120cc6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6120ed57600080fd5b8051611ffe90600b906020840190614a63565b600061210a614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c6020908152604091829020825160608101845281548152600282015492810183905260039091015492019190915290565b60135481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806121b657503361219e6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6121bf57600080fd5b600955565b600b818154811061200f57fe5b3360009081526001602052604090205460ff168061220b5750336121f36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61221457600080fd5b8051611ffe90600a906020840190614a63565b61222f614661565b73ffffffffffffffffffffffffffffffffffffffff1661224d6131f7565b73ffffffffffffffffffffffffffffffffffffffff16146122cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156122f257600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16806123785750336123606131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61238157600080fd5b8051611ffe90600d906020840190614a63565b3360009081526001602052604090205460ff16806123ce5750336123b66131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6123d757600080fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006019828154811061242d57fe5b906000526020600020906004020190508060020154431161244e5750612b0f565b8054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156124be57600080fd5b505afa1580156124d2573d6000803e3d6000fd5b505050506040513d60208110156124e857600080fd5b50519050806124fe575043600290910155612b0f565b600080600080600061251987600201544389600101546139c4565b600354604080517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051969b50949950929750909550935073ffffffffffffffffffffffffffffffffffffffff16916340c10f199160448082019260009290919082900301818387803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506125e06125d5876115fe64e8d4a51000886140f790919063ffffffff16565b600389015490614171565b6003880155436002880155841561273257600354600554604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101899052905191909216916340c10f1991604480830192600092919082900301818387803b15801561266f57600080fd5b505af1158015612683573d6000803e3d6000fd5b5050505060105443116127325760035460055473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf91166126c660646115fe8a604b6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b505050505b821561287957600354600654604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191909216916340c10f1991604480830192600092919082900301818387803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505060105443116128795760035460065473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661280d60646115fe88602d6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050505b81156129c057600354600754604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101869052905191909216916340c10f1991604480830192600092919082900301818387803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b5050505060105443116129c05760035460075473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661295460646115fe8760556140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b505050505b8015612b0757600354600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101859052905191909216916340c10f1991604480830192600092919082900301818387803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050506010544311612b075760035460085473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf9116612a9b60646115fe86605f6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050505b505050505050505b50565b600280541415612b8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028081905550600060198281548110612b9957fe5b60009182526020808320858452601b825260408085203386529092529083208054600490930290910193509190612bd8906064906115fe90604b6140f7565b90506000612bf960646115fe601986600001546140f790919063ffffffff16565b600080855560018501558454909150612c299073ffffffffffffffffffffffffffffffffffffffff1633846145d4565b6005548454612c529173ffffffffffffffffffffffffffffffffffffffff9182169116836145d4565b604080518381529051869133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a350506001600255505050565b6000612c9f614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260409182902082516060810184528154815260028201549281019290925260030154910181905290565b60005b8151811015611ffe57612d15828281518110612d0857fe5b602002602001015161384e565b600101612cf0565b3360009081526001602052604090205460ff1680612d57575033612d3f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b612d6057600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060030155565b600c818154811061200f57fe5b60195460005b81811015611ffe57612dba8161241e565b600101612da9565b612dca614661565b73ffffffffffffffffffffffffffffffffffffffff16612de86131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8015612e7857612e78612da3565b612eb582612eaf60198681548110612e8c57fe5b906000526020600020906004020160010154601e546144dc90919063ffffffff16565b90614171565b601e819055508160198481548110612ec957fe5b906000526020600020906004020160010181905550505050565b612eeb614661565b73ffffffffffffffffffffffffffffffffffffffff16612f096131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612f8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3360009081526001602052604090205460ff168061303457503361301c6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61303d57600080fd5b601155565b3360009081526001602052604090205460ff168061307c5750336130646131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61308557600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060040155565b60115481565b3360009081526001602052604090205460ff16806130fb5750336130e36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61310457600080fd5b8051611ffe90600c906020840190614a63565b3360009081526001602052604090205460ff16806131515750336131396131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61315a57600080fd5b8051611ffe90600f906020840190614a63565b3360009081526001602052604090205460ff16806131a757503361318f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6131b057600080fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b601354600090819084101561322c576000915050613309565b60005b600b54811015613305576000600b828154811061324857fe5b906000526020600020015490506001600a80549050038211156132715760009350505050613309565b8085116132b75760006132a0600a848154811061328a57fe5b600091825260209091200154611bc5888a6144dc565b90506132ac8482614171565b945050505050613309565b808610156132fc5760006132e7600a84815481106132d157fe5b600091825260209091200154611bc5848a6144dc565b919650869190506132f88482614171565b9350505b5060010161322f565b5090505b92915050565b60028054141561338057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055816133da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614bc46035913960400191505060405180910390fd5b6000601984815481106133e957fe5b60009182526020808320878452601b825260408085203380875290845281862060055473ffffffffffffffffffffffffffffffffffffffff9081168852838820908a168852601c865283882092885283882060018401909652929096205460049590950290920195509290919015613481573360009081526001830160205260409020805488019055600382018054880190556134b0565b336000908152600180840160205260409091208054890190556002830180549091019055600382018054880190555b6134ca60646115fe6011548a6140f790919063ffffffff16565b81540181556134d88861241e565b6134e1886141e5565b84546135059073ffffffffffffffffffffffffffffffffffffffff1633308a614665565b8354613512574360028501555b61354261353a6135336127106115fe6011548c6140f790919063ffffffff16565b89906144dc565b855490614171565b808555600386015461355f9164e8d4a51000916115fe91906140f7565b84600101819055506135906135886135336127106115fe6012548c6140f790919063ffffffff16565b845490614171565b80845560038601546135ad9164e8d4a51000916115fe91906140f7565b6001840155604080518881529051899133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a36004840154156135f8576135ff565b4360048501555b50504360069092019190915550506001600255505050565b6000613621614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c60209081526040918290208251606081018452815480825260028301549382019390935260039091015492019190915290565b601b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60145481565b60095481565b60105481565b600080601984815481106136e457fe5b60009182526020808320878452601b8252604080852073ffffffffffffffffffffffffffffffffffffffff898116875290845281862060049586029093016003810154815484517f70a082310000000000000000000000000000000000000000000000000000000081523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561378857600080fd5b505afa15801561379c573d6000803e3d6000fd5b505050506040513d60208110156137b257600080fd5b50516002850154909150431180156137ca5750600081115b1561380f5760006137e485600201544387600101546139c4565b5091935061380b925061380491508490506115fe8464e8d4a510006140f7565b8490614171565b9250505b61383d836001015461383764e8d4a510006115fe8688600001546140f790919063ffffffff16565b906144dc565b979650505050505050565b60175481565b6138578161241e565b612b0f816141e5565b3360009081526001602052604090205460ff168061389a5750336138826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6138a357600080fd5b601555565b60016020526000908152604090205460ff1681565b600f818154811061200f57fe5b60125481565b3360009081526001602052604090205460ff168061390a5750336138f26131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61391357600080fd5b601755565b60185481565b3360009081526001602052604090205460ff16806139585750336139406131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61396157600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806139d78989613213565b905060006139fa601e546115fe8a611bc5600954876140f790919063ffffffff16565b90506000613b32600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6957600080fd5b505afa158015613a7d573d6000803e3d6000fd5b505050506040513d6020811015613a9357600080fd5b5051600354604080517f355274ea000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163355274ea91600480820192602092909190829003018186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6020811015613b2a57600080fd5b5051906144dc565b905081811015613b545760009750809650600095506000945060009350613bc8565b613b6e60646115fe601554856140f790919063ffffffff16565b9750819650613b8d60646115fe601654856140f790919063ffffffff16565b9550613ba960646115fe601754856140f790919063ffffffff16565b9450613bc560646115fe601854856140f790919063ffffffff16565b93505b505050939792965093509350565b600d818154811061200f57fe5b601d6020526000908152604090205460ff1681565b601a6020526000908152604090205481565b613c12614661565b73ffffffffffffffffffffffffffffffffffffffff16613c306131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613cb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600e818154811061200f57fe5b60055473ffffffffffffffffffffffffffffffffffffffff1681565b601c6020526000908152604090208054600282015460039092015490919083565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152601c602090815260408083209390941682526001909201909152205490565b3360009081526001602052604090205460ff1680613dc4575033613dac6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613dcd57600080fd5b601855565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b3360009081526001602052604090205460ff1680613e2e575033613e166131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613e3757600080fd5b600354604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015613eab57600080fd5b505af1158015613ebf573d6000803e3d6000fd5b5050505050565b613ece614661565b73ffffffffffffffffffffffffffffffffffffffff16613eec6131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613f6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ae56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806140a15750336140896131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140aa57600080fd5b601655565b3360009081526001602052604090205460ff16806140e95750336140d16131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140f257600080fd5b601255565b60008261410657506000613309565b8282028284828161411357fe5b041461416a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b7b6021913960400191505060405180910390fd5b9392505050565b60008282018381101561416a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000601982815481106141f457fe5b60009182526020808320858452601b825260408085203386529092529220805460049092029092019250156144d7576000614251826001015461383764e8d4a510006115fe876003015487600001546140f790919063ffffffff16565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156142c857600080fd5b505afa1580156142dc573d6000803e3d6000fd5b505050506040513d60208110156142f257600080fd5b5051905080821115614302578091505b81156144b457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b505060105460028401546000911061446d576143d860646115fe601454866140f790919063ffffffff16565b600354604080517f282d3fdf00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163282d3fdf9160448082019260009290919082900301818387803b15801561445457600080fd5b505af1158015614468573d6000803e3d6000fd5b505050505b43600285015560408051848152602081018390528151889233927f3887f2857beaaf367eb618dfb5e22c1ebd74425affb0602c2e9fe126e3f860eb929081900390910190a3505b600384015483546144cf9164e8d4a51000916115fe916140f7565b600184015550505b505050565b60008282111561454d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008082116145c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816145cc57fe5b049392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526144d7908490614700565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526146fa908590614700565b50505050565b6060614762826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166147d89092919063ffffffff16565b8051909150156144d75780806020019051602081101561478157600080fd5b50516144d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614bf9602a913960400191505060405180910390fd5b60606147e784846000856147ef565b949350505050565b60608247101561484a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614b556026913960400191505060405180910390fd5b6148538561499f565b6148be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061492857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016148eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461498a576040519150601f19603f3d011682016040523d82523d6000602084013e61498f565b606091505b509150915061383d8282866149a5565b3b151590565b606083156149b457508161416a565b8251156149c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a28578181015183820152602001614a10565b50505050905090810190601f168015614a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215614a9e579160200282015b82811115614a9e578251825591602001919060010190614a83565b50614aaa929150614acf565b5090565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115614aaa5760008155600101614ad056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c6963617465644d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205be945065af410dcdd28dd012af8e5ba032fa0b35c72e69010c0ddf6c804923d64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
      "bin": "60806040526000601e553480156200001657600080fd5b50604051620053be380380620053be83398181016040526101e08110156200003d57600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01805199519b9d9a9c989b979a9699959894979396929591948301929184640100000000821115620000a457600080fd5b908301906020820185811115620000ba57600080fd5b8251866020820283011164010000000082111715620000d857600080fd5b82525081516020918201928201910280838360005b8381101562000107578181015183820152602001620000ed565b50505050905001604052602001805160405193929190846401000000008211156200013157600080fd5b9083019060208201858111156200014757600080fd5b82518660208202830111640100000000821117156200016557600080fd5b82525081516020918201928201910280838360005b83811015620001945781810151838201526020016200017a565b5050505090500160405260200180516040519392919084640100000000821115620001be57600080fd5b908301906020820185811115620001d457600080fd5b8251866020820283011164010000000082111715620001f257600080fd5b82525081516020918201928201910280838360005b838110156200022157818101518382015260200162000207565b50505050905001604052602001805160405193929190846401000000008211156200024b57600080fd5b9083019060208201858111156200026157600080fd5b82518660208202830111640100000000821117156200027f57600080fd5b82525081516020918201928201910280838360005b83811015620002ae57818101518382015260200162000294565b5050505090500160405260200180516040519392919084640100000000821115620002d857600080fd5b908301906020820185811115620002ee57600080fd5b82518660208202830111640100000000821117156200030c57600080fd5b82525081516020918201928201910280838360005b838110156200033b57818101518382015260200162000321565b5050505090500160405250505060006200035a6200060860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016002819055508e600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960098190555088601381905550866011819055508560128190555084600a9080519060200190620004a3929190620006ce565b508351620004b990600c906020870190620006ce565b508251620004cf90600d906020860190620006ce565b508151620004e590600e906020850190620006ce565b508051620004fb90600f906020840190620006ce565b5060005b600a54600019018110156200058f5760006200054c6001620005388d62000538866001018f6200060c60201b620040f71790919060201c565b6200067360201b620041711790919060201c565b600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90191909155919091019050620004ff565b50620005b789620005386001600a80549050038b6200060c60201b620040f71790919060201c565b6010555050600b80546001810182556000919091526000197f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015550620007359b505050505050505050505050565b3390565b6000826200061d575060006200066d565b828202828482816200062b57fe5b04146200066a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200539d6021913960400191505060405180910390fd5b90505b92915050565b6000828201838110156200066a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200070c579160200282015b828111156200070c578251825591602001919060010190620006ef565b506200071a9291506200071e565b5090565b5b808211156200071a57600081556001016200071f565b614c5880620007456000396000f3fe608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861790558051608081018252938452908301998a5282019485526060820181815284549384018555939052517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600490920291820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919097161790955594517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696850155517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9697840155505090517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969890910155565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff1680611f52575033611f3a6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611f5b57600080fd5b601055565b3360009081526001602052604090205460ff1680611f9a575033611f826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611fa357600080fd5b601355565b3360009081526001602052604090205460ff1680611fe2575033611fca6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611feb57600080fd5b8051611ffe90600e906020840190614a63565b5050565b600a818154811061200f57fe5b600091825260209091200154905081565b3360009081526001602052604090205460ff168061205a5750336120426131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61206357600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806120e45750336120cc6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6120ed57600080fd5b8051611ffe90600b906020840190614a63565b600061210a614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c6020908152604091829020825160608101845281548152600282015492810183905260039091015492019190915290565b60135481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806121b657503361219e6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6121bf57600080fd5b600955565b600b818154811061200f57fe5b3360009081526001602052604090205460ff168061220b5750336121f36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61221457600080fd5b8051611ffe90600a906020840190614a63565b61222f614661565b73ffffffffffffffffffffffffffffffffffffffff1661224d6131f7565b73ffffffffffffffffffffffffffffffffffffffff16146122cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156122f257600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16806123785750336123606131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61238157600080fd5b8051611ffe90600d906020840190614a63565b3360009081526001602052604090205460ff16806123ce5750336123b66131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6123d757600080fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006019828154811061242d57fe5b906000526020600020906004020190508060020154431161244e5750612b0f565b8054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156124be57600080fd5b505afa1580156124d2573d6000803e3d6000fd5b505050506040513d60208110156124e857600080fd5b50519050806124fe575043600290910155612b0f565b600080600080600061251987600201544389600101546139c4565b600354604080517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051969b50949950929750909550935073ffffffffffffffffffffffffffffffffffffffff16916340c10f199160448082019260009290919082900301818387803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506125e06125d5876115fe64e8d4a51000886140f790919063ffffffff16565b600389015490614171565b6003880155436002880155841561273257600354600554604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101899052905191909216916340c10f1991604480830192600092919082900301818387803b15801561266f57600080fd5b505af1158015612683573d6000803e3d6000fd5b5050505060105443116127325760035460055473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf91166126c660646115fe8a604b6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b505050505b821561287957600354600654604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191909216916340c10f1991604480830192600092919082900301818387803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505060105443116128795760035460065473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661280d60646115fe88602d6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050505b81156129c057600354600754604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101869052905191909216916340c10f1991604480830192600092919082900301818387803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b5050505060105443116129c05760035460075473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661295460646115fe8760556140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b505050505b8015612b0757600354600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101859052905191909216916340c10f1991604480830192600092919082900301818387803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050506010544311612b075760035460085473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf9116612a9b60646115fe86605f6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050505b505050505050505b50565b600280541415612b8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028081905550600060198281548110612b9957fe5b60009182526020808320858452601b825260408085203386529092529083208054600490930290910193509190612bd8906064906115fe90604b6140f7565b90506000612bf960646115fe601986600001546140f790919063ffffffff16565b600080855560018501558454909150612c299073ffffffffffffffffffffffffffffffffffffffff1633846145d4565b6005548454612c529173ffffffffffffffffffffffffffffffffffffffff9182169116836145d4565b604080518381529051869133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a350506001600255505050565b6000612c9f614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260409182902082516060810184528154815260028201549281019290925260030154910181905290565b60005b8151811015611ffe57612d15828281518110612d0857fe5b602002602001015161384e565b600101612cf0565b3360009081526001602052604090205460ff1680612d57575033612d3f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b612d6057600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060030155565b600c818154811061200f57fe5b60195460005b81811015611ffe57612dba8161241e565b600101612da9565b612dca614661565b73ffffffffffffffffffffffffffffffffffffffff16612de86131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8015612e7857612e78612da3565b612eb582612eaf60198681548110612e8c57fe5b906000526020600020906004020160010154601e546144dc90919063ffffffff16565b90614171565b601e819055508160198481548110612ec957fe5b906000526020600020906004020160010181905550505050565b612eeb614661565b73ffffffffffffffffffffffffffffffffffffffff16612f096131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612f8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3360009081526001602052604090205460ff168061303457503361301c6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61303d57600080fd5b601155565b3360009081526001602052604090205460ff168061307c5750336130646131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61308557600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060040155565b60115481565b3360009081526001602052604090205460ff16806130fb5750336130e36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61310457600080fd5b8051611ffe90600c906020840190614a63565b3360009081526001602052604090205460ff16806131515750336131396131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61315a57600080fd5b8051611ffe90600f906020840190614a63565b3360009081526001602052604090205460ff16806131a757503361318f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6131b057600080fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b601354600090819084101561322c576000915050613309565b60005b600b54811015613305576000600b828154811061324857fe5b906000526020600020015490506001600a80549050038211156132715760009350505050613309565b8085116132b75760006132a0600a848154811061328a57fe5b600091825260209091200154611bc5888a6144dc565b90506132ac8482614171565b945050505050613309565b808610156132fc5760006132e7600a84815481106132d157fe5b600091825260209091200154611bc5848a6144dc565b919650869190506132f88482614171565b9350505b5060010161322f565b5090505b92915050565b60028054141561338057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055816133da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614bc46035913960400191505060405180910390fd5b6000601984815481106133e957fe5b60009182526020808320878452601b825260408085203380875290845281862060055473ffffffffffffffffffffffffffffffffffffffff9081168852838820908a168852601c865283882092885283882060018401909652929096205460049590950290920195509290919015613481573360009081526001830160205260409020805488019055600382018054880190556134b0565b336000908152600180840160205260409091208054890190556002830180549091019055600382018054880190555b6134ca60646115fe6011548a6140f790919063ffffffff16565b81540181556134d88861241e565b6134e1886141e5565b84546135059073ffffffffffffffffffffffffffffffffffffffff1633308a614665565b8354613512574360028501555b61354261353a6135336127106115fe6011548c6140f790919063ffffffff16565b89906144dc565b855490614171565b808555600386015461355f9164e8d4a51000916115fe91906140f7565b84600101819055506135906135886135336127106115fe6012548c6140f790919063ffffffff16565b845490614171565b80845560038601546135ad9164e8d4a51000916115fe91906140f7565b6001840155604080518881529051899133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a36004840154156135f8576135ff565b4360048501555b50504360069092019190915550506001600255505050565b6000613621614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c60209081526040918290208251606081018452815480825260028301549382019390935260039091015492019190915290565b601b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60145481565b60095481565b60105481565b600080601984815481106136e457fe5b60009182526020808320878452601b8252604080852073ffffffffffffffffffffffffffffffffffffffff898116875290845281862060049586029093016003810154815484517f70a082310000000000000000000000000000000000000000000000000000000081523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561378857600080fd5b505afa15801561379c573d6000803e3d6000fd5b505050506040513d60208110156137b257600080fd5b50516002850154909150431180156137ca5750600081115b1561380f5760006137e485600201544387600101546139c4565b5091935061380b925061380491508490506115fe8464e8d4a510006140f7565b8490614171565b9250505b61383d836001015461383764e8d4a510006115fe8688600001546140f790919063ffffffff16565b906144dc565b979650505050505050565b60175481565b6138578161241e565b612b0f816141e5565b3360009081526001602052604090205460ff168061389a5750336138826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6138a357600080fd5b601555565b60016020526000908152604090205460ff1681565b600f818154811061200f57fe5b60125481565b3360009081526001602052604090205460ff168061390a5750336138f26131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61391357600080fd5b601755565b60185481565b3360009081526001602052604090205460ff16806139585750336139406131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61396157600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806139d78989613213565b905060006139fa601e546115fe8a611bc5600954876140f790919063ffffffff16565b90506000613b32600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6957600080fd5b505afa158015613a7d573d6000803e3d6000fd5b505050506040513d6020811015613a9357600080fd5b5051600354604080517f355274ea000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163355274ea91600480820192602092909190829003018186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6020811015613b2a57600080fd5b5051906144dc565b905081811015613b545760009750809650600095506000945060009350613bc8565b613b6e60646115fe601554856140f790919063ffffffff16565b9750819650613b8d60646115fe601654856140f790919063ffffffff16565b9550613ba960646115fe601754856140f790919063ffffffff16565b9450613bc560646115fe601854856140f790919063ffffffff16565b93505b505050939792965093509350565b600d818154811061200f57fe5b601d6020526000908152604090205460ff1681565b601a6020526000908152604090205481565b613c12614661565b73ffffffffffffffffffffffffffffffffffffffff16613c306131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613cb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600e818154811061200f57fe5b60055473ffffffffffffffffffffffffffffffffffffffff1681565b601c6020526000908152604090208054600282015460039092015490919083565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152601c602090815260408083209390941682526001909201909152205490565b3360009081526001602052604090205460ff1680613dc4575033613dac6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613dcd57600080fd5b601855565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b3360009081526001602052604090205460ff1680613e2e575033613e166131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613e3757600080fd5b600354604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015613eab57600080fd5b505af1158015613ebf573d6000803e3d6000fd5b5050505050565b613ece614661565b73ffffffffffffffffffffffffffffffffffffffff16613eec6131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613f6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ae56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806140a15750336140896131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140aa57600080fd5b601655565b3360009081526001602052604090205460ff16806140e95750336140d16131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140f257600080fd5b601255565b60008261410657506000613309565b8282028284828161411357fe5b041461416a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b7b6021913960400191505060405180910390fd5b9392505050565b60008282018381101561416a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000601982815481106141f457fe5b60009182526020808320858452601b825260408085203386529092529220805460049092029092019250156144d7576000614251826001015461383764e8d4a510006115fe876003015487600001546140f790919063ffffffff16565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156142c857600080fd5b505afa1580156142dc573d6000803e3d6000fd5b505050506040513d60208110156142f257600080fd5b5051905080821115614302578091505b81156144b457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b505060105460028401546000911061446d576143d860646115fe601454866140f790919063ffffffff16565b600354604080517f282d3fdf00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163282d3fdf9160448082019260009290919082900301818387803b15801561445457600080fd5b505af1158015614468573d6000803e3d6000fd5b505050505b43600285015560408051848152602081018390528151889233927f3887f2857beaaf367eb618dfb5e22c1ebd74425affb0602c2e9fe126e3f860eb929081900390910190a3505b600384015483546144cf9164e8d4a51000916115fe916140f7565b600184015550505b505050565b60008282111561454d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008082116145c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816145cc57fe5b049392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526144d7908490614700565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526146fa908590614700565b50505050565b6060614762826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166147d89092919063ffffffff16565b8051909150156144d75780806020019051602081101561478157600080fd5b50516144d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614bf9602a913960400191505060405180910390fd5b60606147e784846000856147ef565b949350505050565b60608247101561484a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614b556026913960400191505060405180910390fd5b6148538561499f565b6148be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061492857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016148eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461498a576040519150601f19603f3d011682016040523d82523d6000602084013e61498f565b606091505b509150915061383d8282866149a5565b3b151590565b606083156149b457508161416a565b8251156149c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a28578181015183820152602001614a10565b50505050905090810190601f168015614a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215614a9e579160200282015b82811115614a9e578251825591602001919060010190614a83565b50614aaa929150614acf565b5090565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115614aaa5760008155600101614ad056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c6963617465644d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205be945065af410dcdd28dd012af8e5ba032fa0b35c72e69010c0ddf6c804923d64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861790558051608081018252938452908301998a5282019485526060820181815284549384018555939052517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600490920291820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919097161790955594517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696850155517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9697840155505090517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969890910155565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff1680611f52575033611f3a6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611f5b57600080fd5b601055565b3360009081526001602052604090205460ff1680611f9a575033611f826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611fa357600080fd5b601355565b3360009081526001602052604090205460ff1680611fe2575033611fca6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b611feb57600080fd5b8051611ffe90600e906020840190614a63565b5050565b600a818154811061200f57fe5b600091825260209091200154905081565b3360009081526001602052604090205460ff168061205a5750336120426131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61206357600080fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806120e45750336120cc6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6120ed57600080fd5b8051611ffe90600b906020840190614a63565b600061210a614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c6020908152604091829020825160608101845281548152600282015492810183905260039091015492019190915290565b60135481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526001602052604090205460ff16806121b657503361219e6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6121bf57600080fd5b600955565b600b818154811061200f57fe5b3360009081526001602052604090205460ff168061220b5750336121f36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61221457600080fd5b8051611ffe90600a906020840190614a63565b61222f614661565b73ffffffffffffffffffffffffffffffffffffffff1661224d6131f7565b73ffffffffffffffffffffffffffffffffffffffff16146122cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156122f257600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16806123785750336123606131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61238157600080fd5b8051611ffe90600d906020840190614a63565b3360009081526001602052604090205460ff16806123ce5750336123b66131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6123d757600080fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006019828154811061242d57fe5b906000526020600020906004020190508060020154431161244e5750612b0f565b8054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156124be57600080fd5b505afa1580156124d2573d6000803e3d6000fd5b505050506040513d60208110156124e857600080fd5b50519050806124fe575043600290910155612b0f565b600080600080600061251987600201544389600101546139c4565b600354604080517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051969b50949950929750909550935073ffffffffffffffffffffffffffffffffffffffff16916340c10f199160448082019260009290919082900301818387803b15801561259e57600080fd5b505af11580156125b2573d6000803e3d6000fd5b505050506125e06125d5876115fe64e8d4a51000886140f790919063ffffffff16565b600389015490614171565b6003880155436002880155841561273257600354600554604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101899052905191909216916340c10f1991604480830192600092919082900301818387803b15801561266f57600080fd5b505af1158015612683573d6000803e3d6000fd5b5050505060105443116127325760035460055473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf91166126c660646115fe8a604b6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b505050505b821561287957600354600654604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191909216916340c10f1991604480830192600092919082900301818387803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505060105443116128795760035460065473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661280d60646115fe88602d6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050505b81156129c057600354600754604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101869052905191909216916340c10f1991604480830192600092919082900301818387803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b5050505060105443116129c05760035460075473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf911661295460646115fe8760556140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b505050505b8015612b0757600354600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101859052905191909216916340c10f1991604480830192600092919082900301818387803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050506010544311612b075760035460085473ffffffffffffffffffffffffffffffffffffffff9182169163282d3fdf9116612a9b60646115fe86605f6140f7565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050505b505050505050505b50565b600280541415612b8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028081905550600060198281548110612b9957fe5b60009182526020808320858452601b825260408085203386529092529083208054600490930290910193509190612bd8906064906115fe90604b6140f7565b90506000612bf960646115fe601986600001546140f790919063ffffffff16565b600080855560018501558454909150612c299073ffffffffffffffffffffffffffffffffffffffff1633846145d4565b6005548454612c529173ffffffffffffffffffffffffffffffffffffffff9182169116836145d4565b604080518381529051869133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a350506001600255505050565b6000612c9f614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260409182902082516060810184528154815260028201549281019290925260030154910181905290565b60005b8151811015611ffe57612d15828281518110612d0857fe5b602002602001015161384e565b600101612cf0565b3360009081526001602052604090205460ff1680612d57575033612d3f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b612d6057600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060030155565b600c818154811061200f57fe5b60195460005b81811015611ffe57612dba8161241e565b600101612da9565b612dca614661565b73ffffffffffffffffffffffffffffffffffffffff16612de86131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8015612e7857612e78612da3565b612eb582612eaf60198681548110612e8c57fe5b906000526020600020906004020160010154601e546144dc90919063ffffffff16565b90614171565b601e819055508160198481548110612ec957fe5b906000526020600020906004020160010181905550505050565b612eeb614661565b73ffffffffffffffffffffffffffffffffffffffff16612f096131f7565b73ffffffffffffffffffffffffffffffffffffffff1614612f8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3360009081526001602052604090205460ff168061303457503361301c6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61303d57600080fd5b601155565b3360009081526001602052604090205460ff168061307c5750336130646131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61308557600080fd5b6000928352601b6020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060040155565b60115481565b3360009081526001602052604090205460ff16806130fb5750336130e36131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61310457600080fd5b8051611ffe90600c906020840190614a63565b3360009081526001602052604090205460ff16806131515750336131396131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61315a57600080fd5b8051611ffe90600f906020840190614a63565b3360009081526001602052604090205460ff16806131a757503361318f6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6131b057600080fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b601354600090819084101561322c576000915050613309565b60005b600b54811015613305576000600b828154811061324857fe5b906000526020600020015490506001600a80549050038211156132715760009350505050613309565b8085116132b75760006132a0600a848154811061328a57fe5b600091825260209091200154611bc5888a6144dc565b90506132ac8482614171565b945050505050613309565b808610156132fc5760006132e7600a84815481106132d157fe5b600091825260209091200154611bc5848a6144dc565b919650869190506132f88482614171565b9350505b5060010161322f565b5090505b92915050565b60028054141561338057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055816133da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614bc46035913960400191505060405180910390fd5b6000601984815481106133e957fe5b60009182526020808320878452601b825260408085203380875290845281862060055473ffffffffffffffffffffffffffffffffffffffff9081168852838820908a168852601c865283882092885283882060018401909652929096205460049590950290920195509290919015613481573360009081526001830160205260409020805488019055600382018054880190556134b0565b336000908152600180840160205260409091208054890190556002830180549091019055600382018054880190555b6134ca60646115fe6011548a6140f790919063ffffffff16565b81540181556134d88861241e565b6134e1886141e5565b84546135059073ffffffffffffffffffffffffffffffffffffffff1633308a614665565b8354613512574360028501555b61354261353a6135336127106115fe6011548c6140f790919063ffffffff16565b89906144dc565b855490614171565b808555600386015461355f9164e8d4a51000916115fe91906140f7565b84600101819055506135906135886135336127106115fe6012548c6140f790919063ffffffff16565b845490614171565b80845560038601546135ad9164e8d4a51000916115fe91906140f7565b6001840155604080518881529051899133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a36004840154156135f8576135ff565b4360048501555b50504360069092019190915550506001600255505050565b6000613621614aae565b505073ffffffffffffffffffffffffffffffffffffffff166000908152601c60209081526040918290208251606081018452815480825260028301549382019390935260039091015492019190915290565b601b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60145481565b60095481565b60105481565b600080601984815481106136e457fe5b60009182526020808320878452601b8252604080852073ffffffffffffffffffffffffffffffffffffffff898116875290845281862060049586029093016003810154815484517f70a082310000000000000000000000000000000000000000000000000000000081523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561378857600080fd5b505afa15801561379c573d6000803e3d6000fd5b505050506040513d60208110156137b257600080fd5b50516002850154909150431180156137ca5750600081115b1561380f5760006137e485600201544387600101546139c4565b5091935061380b925061380491508490506115fe8464e8d4a510006140f7565b8490614171565b9250505b61383d836001015461383764e8d4a510006115fe8688600001546140f790919063ffffffff16565b906144dc565b979650505050505050565b60175481565b6138578161241e565b612b0f816141e5565b3360009081526001602052604090205460ff168061389a5750336138826131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6138a357600080fd5b601555565b60016020526000908152604090205460ff1681565b600f818154811061200f57fe5b60125481565b3360009081526001602052604090205460ff168061390a5750336138f26131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61391357600080fd5b601755565b60185481565b3360009081526001602052604090205460ff16806139585750336139406131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61396157600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806139d78989613213565b905060006139fa601e546115fe8a611bc5600954876140f790919063ffffffff16565b90506000613b32600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6957600080fd5b505afa158015613a7d573d6000803e3d6000fd5b505050506040513d6020811015613a9357600080fd5b5051600354604080517f355274ea000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163355274ea91600480820192602092909190829003018186803b158015613b0057600080fd5b505afa158015613b14573d6000803e3d6000fd5b505050506040513d6020811015613b2a57600080fd5b5051906144dc565b905081811015613b545760009750809650600095506000945060009350613bc8565b613b6e60646115fe601554856140f790919063ffffffff16565b9750819650613b8d60646115fe601654856140f790919063ffffffff16565b9550613ba960646115fe601754856140f790919063ffffffff16565b9450613bc560646115fe601854856140f790919063ffffffff16565b93505b505050939792965093509350565b600d818154811061200f57fe5b601d6020526000908152604090205460ff1681565b601a6020526000908152604090205481565b613c12614661565b73ffffffffffffffffffffffffffffffffffffffff16613c306131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613cb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b600e818154811061200f57fe5b60055473ffffffffffffffffffffffffffffffffffffffff1681565b601c6020526000908152604090208054600282015460039092015490919083565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152601c602090815260408083209390941682526001909201909152205490565b3360009081526001602052604090205460ff1680613dc4575033613dac6131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613dcd57600080fd5b601855565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b3360009081526001602052604090205460ff1680613e2e575033613e166131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b613e3757600080fd5b600354604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015613eab57600080fd5b505af1158015613ebf573d6000803e3d6000fd5b5050505050565b613ece614661565b73ffffffffffffffffffffffffffffffffffffffff16613eec6131f7565b73ffffffffffffffffffffffffffffffffffffffff1614613f6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ae56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16806140a15750336140896131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140aa57600080fd5b601655565b3360009081526001602052604090205460ff16806140e95750336140d16131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b6140f257600080fd5b601255565b60008261410657506000613309565b8282028284828161411357fe5b041461416a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b7b6021913960400191505060405180910390fd5b9392505050565b60008282018381101561416a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000601982815481106141f457fe5b60009182526020808320858452601b825260408085203386529092529220805460049092029092019250156144d7576000614251826001015461383764e8d4a510006115fe876003015487600001546140f790919063ffffffff16565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156142c857600080fd5b505afa1580156142dc573d6000803e3d6000fd5b505050506040513d60208110156142f257600080fd5b5051905080821115614302578091505b81156144b457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b505060105460028401546000911061446d576143d860646115fe601454866140f790919063ffffffff16565b600354604080517f282d3fdf00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163282d3fdf9160448082019260009290919082900301818387803b15801561445457600080fd5b505af1158015614468573d6000803e3d6000fd5b505050505b43600285015560408051848152602081018390528151889233927f3887f2857beaaf367eb618dfb5e22c1ebd74425affb0602c2e9fe126e3f860eb929081900390910190a3505b600384015483546144cf9164e8d4a51000916115fe916140f7565b600184015550505b505050565b60008282111561454d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008082116145c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816145cc57fe5b049392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526144d7908490614700565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526146fa908590614700565b50505050565b6060614762826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166147d89092919063ffffffff16565b8051909150156144d75780806020019051602081101561478157600080fd5b50516144d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614bf9602a913960400191505060405180910390fd5b60606147e784846000856147ef565b949350505050565b60608247101561484a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614b556026913960400191505060405180910390fd5b6148538561499f565b6148be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061492857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016148eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461498a576040519150601f19603f3d011682016040523d82523d6000602084013e61498f565b606091505b509150915061383d8282866149a5565b3b151590565b606083156149b457508161416a565b8251156149c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a28578181015183820152602001614a10565b50505050905090810190601f168015614a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215614a9e579160200282015b82811115614a9e578251825591602001919060010190614a83565b50614aaa929150614acf565b5090565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115614aaa5760008155600101614ad056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c6963617465644d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205be945065af410dcdd28dd012af8e5ba032fa0b35c72e69010c0ddf6c804923d64736f6c634300060c0033",
      "srcmap": "788:28974:15:-:0;;;4507:1;4474:34;;5104:1490;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5104:1490:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;;;:12;;:::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;850:159;1645:1:8;1760:7;:22;;;;5675:9:15;5664:8;;:20;;;;;-1:-1:-1;;;;;5664:20:15;;;;;-1:-1:-1;;;;;5664:20:15;;;;;;5704:8;5694:7;;:18;;;;;-1:-1:-1;;;;;5694:18:15;;;;;-1:-1:-1;;;;;5694:18:15;;;;;;5738:14;5722:13;;:30;;;;;-1:-1:-1;;;;;5722:30:15;;;;;-1:-1:-1;;;;;5722:30:15;;;;;;5776:12;5762:11;;:26;;;;;-1:-1:-1;;;;;5762:26:15;;;;;-1:-1:-1;;;;;5762:26:15;;;;;;5812:12;5798:11;;:26;;;;;-1:-1:-1;;;;;5798:26:15;;;;;-1:-1:-1;;;;;5798:26:15;;;;;;5853:15;5834:16;:34;;;;5892:11;5878;:25;;;;5926:11;5913:10;:24;;;;5959:10;5947:9;:22;;;;5999:17;5979;:37;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6026:44:15;;;;:20;;:44;;;;;:::i;:::-;-1:-1:-1;6080:40:15;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;6130:28:15;;;;:12;;:28;;;;;:::i;:::-;-1:-1:-1;6168:26:15;;;;:11;;:26;;;;;:::i;:::-;;6209:9;6204:211;6228:17;:24;-1:-1:-1;;6228:28:15;6224:32;;6204:211;;;6277:22;6302:51;6351:1;6302:44;6334:11;6302:27;6325:1;6327;6325:3;6302:18;:22;;;;;;:27;;;;:::i;:::-;:31;;;;;;:44;;;;:::i;:51::-;6367:16;:37;;;;;;;;-1:-1:-1;6367:37:15;;;;;;;;;;6258:3;;;;;-1:-1:-1;6204:211:15;;;;6448:95;6531:11;6448:65;6511:1;6484:17;:24;;;;:28;6448:18;:35;;;;;;:65;;;;:::i;:95::-;6424:21;:119;-1:-1:-1;;6553:16:15;:34;;;;;;;-1:-1:-1;6553:34:15;;;;-1:-1:-1;;6553:34:15;;;;;-1:-1:-1;788:28974:15;;-1:-1:-1;;;;;;;;;;;;788:28974:15;598:104:6;685:10;598:104;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;-1:-1:-1;;;3672:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;-1:-1:-1;3538:215:1;;;;;:::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;788:28974:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;788:28974:15;;;-1:-1:-1;788:28974:15;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "788:28974:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26662:113;;;;;;;;;;;;;;;;-1:-1:-1;26662:113:15;;:::i;:::-;;2696:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6600:93;;;:::i;:::-;;;;;;;;;;;;;;;;27988:397;;;;;;;;;;;;;;;;-1:-1:-1;27988:397:15;;:::i;3798:29::-;;;:::i;18327:5740::-;;;;;;;;;;;;;;;;-1:-1:-1;18327:5740:15;;;;;;;;;;;;;;:::i;3983:26::-;;;;;;;;;;;;;;;;-1:-1:-1;3983:26:15;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4474:34;;;:::i;27532:450::-;;;;;;;;;;;;;;;;-1:-1:-1;27532:450:15;;:::i;6765:842::-;;;;;;;;;;;;;;;;-1:-1:-1;6765:842:15;;;;;;;;;;;;;;;;:::i;2866:28::-;;;:::i;25600:120::-;;;;;;;;;;;;;;;;-1:-1:-1;25600:120:15;;:::i;27412:114::-;;;;;;;;;;;;;;;;-1:-1:-1;27412:114:15;;:::i;29140:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29140:138:15;;-1:-1:-1;29140:138:15;;-1:-1:-1;;;;;29140:138:15:i;3153:34::-;;;;;;;;;;;;;;;;-1:-1:-1;3153:34:15;;:::i;26168:108::-;;;;;;;;;;;;;;;;-1:-1:-1;26168:108:15;;;;:::i;25757:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25757:122:15;;-1:-1:-1;25757:122:15;;-1:-1:-1;;;;;25757:122:15:i;15826:175::-;;;;;;;;;;;;;;;;-1:-1:-1;15826:175:15;;;;:::i;3613:26::-;;;:::i;2930:::-;;;:::i;26313:110::-;;;;;;;;;;;;;;;;-1:-1:-1;26313:110:15;;:::i;3225:33::-;;;;;;;;;;;;;;;;-1:-1:-1;3225:33:15;;:::i;26468:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26468:149:15;;-1:-1:-1;26468:149:15;;-1:-1:-1;;;;;26468:149:15:i;420:150:9:-;;;;;;;;;;;;;;;;-1:-1:-1;420:150:9;;;;:::i;29011:123:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29011:123:15;;-1:-1:-1;29011:123:15;;-1:-1:-1;;;;;29011:123:15:i;25913:95::-;;;;;;;;;;;;;;;;-1:-1:-1;25913:95:15;;;;:::i;8389:2623::-;;;;;;;;;;;;;;;;-1:-1:-1;8389:2623:15;;:::i;24221:617::-;;;;;;;;;;;;;;;;-1:-1:-1;24221:617:15;;:::i;15637:183::-;;;;;;;;;;;;;;;;-1:-1:-1;15637:183:15;;;;:::i;13967:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13967:156:15;;-1:-1:-1;13967:156:15;;-1:-1:-1;;;;;13967:156:15:i;28391:226::-;;;;;;;;;;;;;;;;-1:-1:-1;28391:226:15;;;;;;;;;;;;;;:::i;3296:37::-;;;;;;;;;;;;;;;;-1:-1:-1;3296:37:15;;:::i;8141:175::-;;;:::i;7711:350::-;;;;;;;;;;;;;;;;-1:-1:-1;7711:350:15;;;;;;;;;;;;;;:::i;1717:145:0:-;;;:::i;29517:109:15:-;;;;;;;;;;;;;;;;-1:-1:-1;29517:109:15;;:::i;28623:225::-;;;;;;;;;;;;;;;;-1:-1:-1;28623:225:15;;;;;;;;;;;;;;:::i;3491:25::-;;;:::i;28854:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28854:151:15;;-1:-1:-1;28854:151:15;;-1:-1:-1;;;;;28854:151:15:i;29284:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29284:114:15;;-1:-1:-1;29284:114:15;;-1:-1:-1;;;;;29284:114:15:i;25473:88::-;;;;;;;;;;;;;;;;-1:-1:-1;25473:88:15;;;;:::i;1085:85:0:-;;;:::i;11179:754:15:-;;;;;;;;;;;;;;;;-1:-1:-1;11179:754:15;;;;;;;:::i;16335:1940::-;;;;;;;;;;;;;;;;-1:-1:-1;16335:1940:15;;;;;;;;;;;;;;:::i;15454:177::-;;;;;;;;;;;;;;;;-1:-1:-1;15454:177:15;;;;:::i;4205:64::-;;;;;;;;;;;;;;;;-1:-1:-1;4205:64:15;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3646:40;;;:::i;3059:31::-;;;:::i;3449:36::-;;;:::i;13105:856::-;;;;;;;;;;;;;;;;-1:-1:-1;13105:856:15;;;;;;;;;:::i;3844:30::-;;;:::i;14129:99::-;;;;;;;;;;;;;;;;-1:-1:-1;14129:99:15;;:::i;26810:112::-;;;;;;;;;;;;;;;;-1:-1:-1;26810:112:15;;:::i;151:42:9:-;;;;;;;;;;;;;;;;-1:-1:-1;151:42:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3415:28:15;;;;;;;;;;;;;;;;-1:-1:-1;3415:28:15;;:::i;3522:24::-;;;:::i;27099:112::-;;;;;;;;;;;;;;;;-1:-1:-1;27099:112:15;;:::i;3898:35::-;;;:::i;26040:96::-;;;;;;;;;;;;;;;;-1:-1:-1;26040:96:15;;;;:::i;2770:24::-;;;:::i;11939:1094::-;;;;;;;;;;;;;;;;-1:-1:-1;11939:1094:15;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3339:35;;;;;;;;;;;;;;;;-1:-1:-1;3339:35:15;;:::i;4337:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4337:44:15;;;;:::i;4015:42::-;;;;;;;;;;;;;;;;-1:-1:-1;4015:42:15;;;;:::i;316:98:9:-;;;;;;;;;;;;;;;;-1:-1:-1;316:98:9;;;;:::i;3380:29:15:-;;;;;;;;;;;;;;;;-1:-1:-1;3380:29:15;;:::i;2820:22::-;;;:::i;4275:56::-;;;;;;;;;;;;;;;;-1:-1:-1;4275:56:15;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;16007:248;;;;;;;;;;;;;;;;-1:-1:-1;16007:248:15;;;;;;;;;;;:::i;27251:129::-;;;;;;;;;;;;;;;;-1:-1:-1;27251:129:15;;:::i;2984:26::-;;;:::i;3731:30::-;;;:::i;29632:128::-;;;;;;;;;;;;;;;;-1:-1:-1;29632:128:15;;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;26956:108:15:-;;;;;;;;;;;;;;;;-1:-1:-1;26956:108:15;;:::i;29404:107::-;;;;;;;;;;;;;;;;-1:-1:-1;29404:107:15;;:::i;26662:113::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26732:25:15::1;:36:::0;26662:113::o;2696:31::-;;;;;;:::o;6600:93::-;6671:8;:15;6600:93;:::o;27988:397::-;28042:7;28085:14;;;:8;:14;;;;;;;;28100:10;28085:26;;;;;;;28125:22;;;;:26;28121:258;;28201:22;;;28186:12;:37;;-1:-1:-1;28237:15:15;;28121:258;28317:22;;;28302:12;:37;;-1:-1:-1;27988:397:15;;;;:::o;3798:29::-;;;;:::o;18327:5740::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;;;;18450:21:15::1;18474:8;18483:4;18474:14;;;;;;;;;::::0;;;::::1;::::0;;;18522;;;:8:::1;:14:::0;;;;;;18537:10:::1;18522:26:::0;;;;;;;;;::::1;18589:20:::0;::::1;::::0;;:14:::1;:20:::0;;;;;;18652:26;;;;;18696:11;;18474:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;18522:26:15;;18589:20;18696:22;-1:-1:-1;18696:22:15::1;18688:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18770:18;::::0;::::1;::::0;18766:185:::1;;18850:10;18834:27;::::0;;;:15:::1;::::0;::::1;:27;::::0;;;;;;:37;;::::1;18804:67:::0;;18909:21:::1;::::0;::::1;::::0;;:31;;::::1;18885:55:::0;;18766:185:::1;18983:20:::0;;:30;;::::1;18960:53:::0;;19024:16:::1;19035:4:::0;19024:10:::1;:16::i;:::-;19050:14;19059:4;19050:8;:14::i;:::-;19079:11:::0;;19075:4986:::1;;19120:11:::0;;:24:::1;::::0;19136:7;19120:15:::1;:24::i;:::-;19106:38:::0;;19162:22:::1;::::0;::::1;::::0;:26;19158:214:::1;;19241:22;::::0;::::1;::::0;19226:12:::1;:37;19208:15;::::0;::::1;:55:::0;19158:214:::1;;;19335:22;::::0;::::1;::::0;19320:12:::1;:37;19302:15;::::0;::::1;:55:::0;19158:214:::1;19425:20;19446:1;19425:23;;;;;;;;;;;;;;;;19406:4;:15;;;:42;:99;;;;19484:4;:21;;;19468:12;:37;19406:99;19385:4478;;;19652:143;19707:10;19740:37;19773:3;19740:28;19752:12;19765:1;19752:15;;;;;;;;;;;;;;;;19740:7;:11;;:28;;;;:::i;:::-;:32:::0;::::1;:37::i;:::-;19652:12:::0;;::::1;;::::0;:143;:25:::1;:143::i;:::-;19868:7;::::0;19910:11:::1;:14:::0;;19813:139:::1;::::0;19868:7:::1;;::::0;19898:36:::1;::::0;19930:3:::1;::::0;19898:27:::1;::::0;19868:7:::1;::::0;19910:14:::1;;;19813:139;19385:4478;;;20013:20;20034:1;20013:23;;;;;;;;;;;;;;;;19994:4;:15;;;:42;;:102;;;;;20075:18;20094:1;20075:21;;;;;;;;;;;;;;;;20056:4;:15;;;:40;;19994:102;19973:3890;;;20225:143;20280:10;20313:37;20346:3;20313:28;20325:12;20338:1;20325:15;;;;;;;20225:143;20441:7;::::0;20483:11:::1;:14:::0;;20386:139:::1;::::0;20441:7:::1;;::::0;20471:36:::1;::::0;20503:3:::1;::::0;20471:27:::1;::::0;20441:7;;20483:14;::::1;;;;19973:3890;20586:20;20607:1;20586:23;;;;;;;;;;;;;;;;20567:4;:15;;;:42;;:102;;;;;20648:18;20667:1;20648:21;;;;;;;;;;;;;;;;20629:4;:15;;;:40;;20567:102;20546:3317;;;20791:143;20846:10;20879:37;20912:3;20879:28;20891:12;20904:1;20891:15;;;;;;;20791:143;21007:7;::::0;21049:11:::1;:14:::0;;20952:139:::1;::::0;21007:7:::1;;::::0;21037:36:::1;::::0;21069:3:::1;::::0;21037:27:::1;::::0;21061:1:::1;::::0;21049:14;::::1;;;;20546:3317;21152:20;21173:1;21152:23;;;;;;;;;;;;;;;;21133:4;:15;;;:42;;:102;;;;;21214:18;21233:1;21214:21;;;;;;;;;;;;;;;;21195:4;:15;;;:40;;21133:102;21112:2751;;;21365:143;21420:10;21453:37;21486:3;21453:28;21465:12;21478:1;21465:15;;;;;;;21365:143;21581:7;::::0;21623:11:::1;:14:::0;;21526:139:::1;::::0;21581:7:::1;;::::0;21611:36:::1;::::0;21643:3:::1;::::0;21611:27:::1;::::0;21635:1:::1;::::0;21623:14;::::1;;;;21112:2751;21726:20;21747:1;21726:23;;;;;;;;;;;;;;;;21707:4;:15;;;:42;;:102;;;;;21788:18;21807:1;21788:21;;;;;;;;;;;;;;;;21769:4;:15;;;:40;;21707:102;21686:2177;;;21932:143;21987:10;22020:37;22053:3;22020:28;22032:12;22045:1;22032:15;;;;;;;21932:143;22148:7;::::0;22190:11:::1;:14:::0;;22093:139:::1;::::0;22148:7:::1;;::::0;22178:36:::1;::::0;22210:3:::1;::::0;22178:27:::1;::::0;22202:1:::1;::::0;22190:14;::::1;;;;21686:2177;22293:20;22314:1;22293:23;;;;;;;;;;;;;;;;22274:4;:15;;;:42;;:102;;;;;22355:18;22374:1;22355:21;;;;;;;;;;;;;;;;22336:4;:15;;;:40;;22274:102;22253:1610;;;22524:144;22579:10;22612:38;22645:4;22612:28;22624:12;22637:1;22624:15;;;;;;;22524:144;22686:140;22741:7;;;;;;;;;;;22771:37;22803:4;22771:27;22783:11;22795:1;22783:14;;;;;;;22253:1610;22887:20;22908:1;22887:23;;;;;;;;;;;;;;;;22868:4;:15;;;:42;;:102;;;;;22949:18;22968:1;22949:21;;;;;;;;;;;;;;;;22930:4;:15;;;:40;;22868:102;22847:1016;;;23079:145;23134:10;23167:39;23200:5;23167:28;23179:12;23192:1;23179:15;;;;;;;23079:145;23297:7;::::0;23339:11:::1;:14:::0;;23242:141:::1;::::0;23297:7:::1;;::::0;23327:38:::1;::::0;23359:5:::1;::::0;23327:27:::1;::::0;23351:1:::1;::::0;23339:14;::::1;;;;22847:1016;23426:20;23447:1;23426:23;;;;;;;;;;;;;;;;23408:4;:15;;;:41;23404:459;;;23544:145;23599:10;23632:39;23665:5;23632:28;23644:12;23657:1;23644:15;;;;;;;23544:145;23762:7;::::0;23804:11:::1;:14:::0;;23707:141:::1;::::0;23762:7:::1;;::::0;23792:38:::1;::::0;23824:5:::1;::::0;23792:27:::1;::::0;23816:1:::1;::::0;23804:14;::::1;;;;23707:141;23910:24;::::0;::::1;::::0;23894:11;;:51:::1;::::0;23940:4:::1;::::0;23894:41:::1;::::0;:15:::1;:41::i;:51::-;23876:15;::::0;::::1;:69:::0;23964:35:::1;::::0;;;;;;;23985:4;;23973:10:::1;::::0;23964:35:::1;::::0;;;;::::1;::::0;;::::1;24038:12;24013:22;::::0;::::1;:37:::0;19075:4986:::1;-1:-1:-1::0;;1645:1:8;2580:7;:22;-1:-1:-1;;;;;18327:5740:15:o;3983:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3983:26:15;;;:::o;4474:34::-;;;;:::o;27532:450::-;27597:7;27616:18;27637:45;27666:1;27651:12;:16;27669:12;27637:13;:45::i;:::-;27616:66;-1:-1:-1;27696:9:15;27692:284;;27743:16;;27728:32;;:10;;:14;:32::i;:::-;27721:39;;;;;27692:284;27814:151;27949:15;;27814:109;27893:8;27909:1;27902:4;:8;27893:18;;;;;;;;;;;;;;;;;;:29;;;27814:53;27850:16;;27814:10;:35;;:53;;;;:::i;:::-;:78;;:109::i;6765:842::-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5003:23:15::1;::::0;::::1;;::::0;;;:13:::1;:23;::::0;;;;;6895:8;;5003:23:::1;;:32;4995:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6936:26:::2;::::0;::::2;;::::0;;;:7:::2;:26;::::0;;;;;:31;6915:119:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7048:11;7044:59;;;7075:17;:15;:17::i;:::-;7112:23;7165:11;;7150:12;:26;:55;;7194:11;;7150:55;;;7179:12;7150:55;7233:15;::::0;7112:93;;-1:-1:-1;7233:32:15::2;::::0;7253:11;7233:19:::2;:32::i;:::-;7215:15;:50:::0;7304:8:::2;:15:::0;;7275:26:::2;::::0;;::::2;;::::0;;;:7:::2;:26;::::0;;;;;;;7322:1:::2;7304:19:::0;;::::2;7275:48:::0;;7333:13:::2;:23:::0;;;;;:30;;;::::2;::::0;::::2;::::0;;7400:190;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;;;;;;;;;;;;;;7373:227;;;;::::2;::::0;;;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;::::2;;::::0;;;;;;;;;;;;;;-1:-1:-1;;7373:227:15;;;;;;;6765:842::o;2866:28::-;;;;;;:::o;25600:120::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25679:21:15::1;:34:::0;25600:120::o;27412:114::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27492:11:15::1;:27:::0;27412:114::o;29140:138::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29247:24:15;;::::1;::::0;:12:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;29140:138:::0;:::o;3153:34::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3153:34:15;:::o;26168:108::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26244:11:15::1;:25:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26168:108::o;25757:122::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25842:30:15;;::::1;::::0;:16:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;15826:175::-:0;15884:7;15903:29;;:::i;:::-;-1:-1:-1;;15935:21:15;;;;;;:14;:21;;;;;;;;;15903:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15826:175::o;3613:26::-;;;;:::o;2930:::-;;;;;;:::o;26313:110::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26387:16:15::1;:29:::0;26313:110::o;3225:33::-;;;;;;;;;;26468:149;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26577:33:15;;::::1;::::0;:17:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;420:150:9:-:0;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9::1;::::0;::::1;513:10;500:23;;492:32;;;::::0;::::1;;534:21;;558:5;534:21:::0;;;:10:::1;:21;::::0;;;;:29;;;::::1;::::0;;420:150::o;29011:123:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29096:31:15;;::::1;::::0;:18:::1;::::0;:31:::1;::::0;::::1;::::0;::::1;:::i;25913:95::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25979:13:15::1;:22:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25913:95::o;8389:2623::-;8440:21;8464:8;8473:4;8464:14;;;;;;;;;;;;;;;;;;8440:38;;8508:4;:20;;;8492:12;:36;8488:73;;8544:7;;;8488:73;8589:12;;:37;;;;;;8620:4;8589:37;;;;;;8570:16;;8589:12;;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8589:37:15;;-1:-1:-1;8640:13:15;8636:99;;-1:-1:-1;8692:12:15;8669:20;;;;:35;8718:7;;8636:99;8744:22;8776:25;8811:21;8842:22;8874:27;9071:66;9085:4;:20;;;9107:12;9121:4;:15;;;9071:13;:66::i;:::-;9147:8;;:47;;;;;;9169:4;9147:47;;;;;;;;;;;;8911:226;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;;-1:-1:-1;8911:226:15;-1:-1:-1;9147:8:15;;;:13;;:47;;;;;:8;;:47;;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9231:93;9273:41;9305:8;9273:27;9295:4;9273:17;:21;;:27;;;;:::i;:41::-;9231:24;;;;;:28;:93::i;:::-;9204:24;;;:120;9357:12;9334:20;;;:35;9383:18;;9379:389;;9417:8;;9439:7;;9417:47;;;;;;:8;9439:7;;;9417:47;;;;;;;;;;;;:8;;;;;:13;;:47;;;;;:8;;:47;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9638:21;;9622:12;:37;9618:140;;9679:8;;9701:7;;9679:8;;;;;:13;;9701:7;9711:31;9738:3;9711:22;:14;9730:2;9711:18;:22::i;:31::-;9679:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:140;9781:17;;9777:453;;9814:8;;9828:13;;9814:43;;;;;;:8;9828:13;;;9814:43;;;;;;;;;;;;:8;;;;;:13;;:43;;;;;:8;;:43;;;;;;;:8;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10095:21;;10079:12;:37;10075:145;;10136:8;;10158:13;;10136:8;;;;;:13;;10158;10174:30;10200:3;10174:21;:13;10192:2;10174:17;:21::i;:30::-;10136:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10075:145;10243:18;;10239:354;;10277:8;;10291:11;;10277:42;;;;;;:8;10291:11;;;10277:42;;;;;;;;;;;;:8;;;;;:13;;:42;;;;;:8;;:42;;;;;;;:8;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10459:21;;10443:12;:37;10439:144;;10500:8;;10522:11;;10500:8;;;;;:13;;10522:11;10536:31;10563:3;10536:22;:14;10555:2;10536:18;:22::i;:31::-;10500:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10439:144;10606:23;;10602:404;;10645:8;;10659:11;;10645:47;;;;;;:8;10659:11;;;10645:47;;;;;;;;;;;;:8;;;;;:13;;:47;;;;;:8;;:47;;;;;;;:8;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10867:21;;10851:12;:37;10847:149;;10908:8;;10930:11;;10908:8;;;;;:13;;10930:11;10944:36;10976:3;10944:27;:19;10968:2;10944:23;:27::i;:36::-;10908:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10847:149;8389:2623;;;;;;;;;:::o;24221:617::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:7;:18;;;;24292:21:15::1;24316:8;24325:4;24316:14;;;;;;;;;::::0;;;::::1;::::0;;;24364;;;:8:::1;:14:::0;;;;;;24379:10:::1;24364:26:::0;;;;;;;;24493:11;;24316:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;24364:26:15;24316:14;24493:28:::1;::::0;24517:3:::1;::::0;24493:19:::1;::::0;24509:2:::1;24493:15;:19::i;:28::-;24470:51;;24531:17;24551:28;24575:3;24551:19;24567:2;24551:4;:11;;;:15;;:19;;;;:::i;:28::-;24603:1;24589:15:::0;;;24614::::1;::::0;::::1;:19:::0;24643:12;;24531:48;;-1:-1:-1;24643:60:15::1;::::0;:12:::1;;24677:10;24690:12:::0;24643:25:::1;:60::i;:::-;24747:7;::::0;24713:12;;:54:::1;::::0;24747:7:::1;24713:12:::0;;::::1;::::0;24747:7:::1;24757:9:::0;24713:25:::1;:54::i;:::-;24782:49;::::0;;;;;;;24812:4;;24800:10:::1;::::0;24782:49:::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;;1645:1:8;2580:7;:22;-1:-1:-1;;;24221:617:15:o;15637:183::-;15701:7;15720:29;;:::i;:::-;-1:-1:-1;;15752:21:15;;;;;;:14;:21;;;;;;;;;15720:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:183::o;13967:156::-;14035:9;14030:87;14054:5;:12;14050:1;:16;14030:87;;;14085:21;14097:5;14103:1;14097:8;;;;;;;;;;;;;;14085:11;:21::i;:::-;14068:3;;14030:87;;28391:226;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28524:21:15::1;28548:14:::0;;;:8:::1;:14;::::0;;;;;;;:21:::1;::::0;;::::1;::::0;;;;;;;28579:22:::1;;:31:::0;28391:226::o;3296:37::-;;;;;;;;;;8141:175;8202:8;:15;8185:14;8227:83;8255:6;8249:3;:12;8227:83;;;8284:15;8295:3;8284:10;:15::i;:::-;8263:5;;8227:83;;7711:350;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7838:11:15::1;7834:59;;;7865:17;:15;:17::i;:::-;7920:85;7984:11;7920:46;7940:8;7949:4;7940:14;;;;;;;;;;;;;;;;;;:25;;;7920:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:85::i;:::-;7902:15;:103;;;;8043:11;8015:8;8024:4;8015:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;7711:350:::0;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;29517:109:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29595:10:15::1;:24:::0;29517:109::o;28623:225::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28755:21:15::1;28779:14:::0;;;:8:::1;:14;::::0;;;;;;;:21:::1;::::0;;::::1;::::0;;;;;;;28810:22:::1;;:31:::0;28623:225::o;3491:25::-;;;;:::o;28854:151::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;28963:35:15;;::::1;::::0;:20:::1;::::0;:35:::1;::::0;::::1;::::0;::::1;:::i;29284:114::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29369:22:15;;::::1;::::0;:11:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;25473:88::-:0;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;25536:7:15::1;:18:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25473:88::o;1085:85:0:-;1131:7;1157:6;;;1085:85;:::o;11179:754:15:-;11338:11;;11275:7;;;;11330:19;;11326:33;;;11358:1;11351:8;;;;;11326:33;11375:9;11370:533;11394:16;:23;11390:27;;11370:533;;;11438:16;11457;11474:1;11457:19;;;;;;;;;;;;;;;;11438:38;;11523:1;11498:17;:24;;;;:26;11494:1;:30;11490:44;;;11533:1;11526:8;;;;;;;11490:44;11560:8;11553:3;:15;11549:144;;11588:9;11600:40;11619:17;11637:1;11619:20;;;;;;;;;;;;;;;;;;11600:14;:3;11608:5;11600:7;:14::i;:40::-;11588:52;-1:-1:-1;11665:13:15;:6;11588:52;11665:10;:13::i;:::-;11658:20;;;;;;;;11549:144;11719:8;11711:5;:16;11707:186;;;11747:9;11759:45;11783:17;11801:1;11783:20;;;;;;;;;;;;;;;;;;11759:19;:8;11772:5;11759:12;:19::i;:45::-;11830:8;;-1:-1:-1;11830:8:15;;11747:57;-1:-1:-1;11865:13:15;:6;11747:57;11865:10;:13::i;:::-;11856:22;;11707:186;;-1:-1:-1;11419:3:15;;11370:533;;;-1:-1:-1;11920:6:15;-1:-1:-1;11179:754:15;;;;;:::o;16335:1940::-;1688:1:8;2277:7;;:19;;2269:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:1;2407:18;;16478:11:15;16457:111:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16579:21;16603:8;16612:4;16603:14;;;;;;;;;::::0;;;::::1;::::0;;;16651;;;:8:::1;:14:::0;;;;;;16666:10:::1;16651:26:::0;;;;;;;;;16726:7:::1;::::0;16651:26:::1;16726:7:::0;;::::1;16711:23:::0;;;;;16775:20;;::::1;::::0;;:14:::1;:20:::0;;;;;16838:26;;;;;;16726:7;16879:15;::::1;:27:::0;;;;;;;;16603:14:::1;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;16711:23:15;16775:20;;16838:26;16879:31;16875:424:::1;;16972:10;16956:27;::::0;;;:15:::1;::::0;::::1;:27;::::0;;;;;;:37;::::1;16926:67:::0;;17031:21:::1;::::0;::::1;::::0;;:31;::::1;17007:55:::0;;16875:424:::1;;;17139:10;17123:27;::::0;;;:15:::1;::::0;;::::1;:27;::::0;;;;;;;:37;::::1;17093:67:::0;;17196:19:::1;::::0;::::1;::::0;;:23;;::::1;17174:45:::0;;17257:21:::1;::::0;::::1;::::0;;:31;::::1;17233:55:::0;;16875:424:::1;17379:32;17407:3;17379:23;17391:10;;17379:7;:11;;:23;;;;:::i;:32::-;17344:20:::0;;:67:::1;17309:102:::0;;17422:16:::1;17433:4:::0;17422:10:::1;:16::i;:::-;17448:14;17457:4;17448:8;:14::i;:::-;17472:12:::0;;:120:::1;::::0;:12:::1;;17523:10;17556:4;17575:7:::0;17472:29:::1;:120::i;:::-;17606:11:::0;;17602:84:::1;;17663:12;17638:22;::::0;::::1;:37:::0;17602:84:::1;17709:86;17738:47;17750:34;17778:5;17750:23;17762:10;;17750:7;:11;;:23;;;;:::i;:34::-;17738:7:::0;;:11:::1;:47::i;:::-;17709:11:::0;;;:15:::1;:86::i;:::-;17695:100:::0;;;17839:24:::1;::::0;::::1;::::0;17823:51:::1;::::0;17869:4:::1;::::0;17823:41:::1;::::0;17695:100;17823:15:::1;:41::i;:51::-;17805:4;:15;;:69;;;;17898:85;17927:46;17939:33;17966:5;17939:22;17951:9;;17939:7;:11;;:22;;;;:::i;17927:46::-;17898:11:::0;;;:15:::1;:85::i;:::-;17884:99:::0;;;18027:24:::1;::::0;::::1;::::0;18011:51:::1;::::0;18057:4:::1;::::0;18011:41:::1;::::0;17884:99;18011:15:::1;:41::i;:51::-;17993:15;::::0;::::1;:69:::0;18077:34:::1;::::0;;;;;;;18097:4;;18085:10:::1;::::0;18077:34:::1;::::0;;;;::::1;::::0;;::::1;18125:22;::::0;::::1;::::0;:26;18121:102:::1;;;;;18200:12;18175:22;::::0;::::1;:37:::0;18121:102:::1;-1:-1:-1::0;;18256:12:15::1;18232:21;::::0;;::::1;:36:::0;;;;-1:-1:-1;;1645:1:8;2580:7;:22;-1:-1:-1;;;16335:1940:15:o;15454:177::-;15515:7;15534:29;;:::i;:::-;-1:-1:-1;;15566:21:15;;;;;;:14;:21;;;;;;;;;15534:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15454:177::o;4205:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3646:40::-;;;;:::o;3059:31::-;;;;:::o;3449:36::-;;;;:::o;13105:856::-;13204:7;13227:21;13251:8;13260:4;13251:14;;;;;;;;;;;;;;;;13299;;;:8;:14;;;;;;:21;;;;;;;;;;;;13251:14;;;;;;;13360:24;;;;13413:12;;:37;;;;;13444:4;13413:37;;;;;;;;;13251:14;;-1:-1:-1;13299:21:15;;13360:24;;13251:14;;13413:12;;;;;:22;;:37;;;;;13251:14;;13413:37;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13413:37:15;13479:20;;;;13413:37;;-1:-1:-1;13464:12:15;:35;:51;;;;;13514:1;13503:8;:12;13464:51;13460:411;;;13531:25;13600:128;13631:4;:20;;;13669:12;13699:4;:15;;;13600:13;:128::i;:::-;-1:-1:-1;13570:158:15;;-1:-1:-1;13764:96:15;;-1:-1:-1;13805:41:15;;-1:-1:-1;13837:8:15;;-1:-1:-1;13805:27:15;13570:158;13827:4;13805:21;:27::i;:41::-;13764:19;;:23;:96::i;:::-;13742:118;;13460:411;;13887:67;13938:4;:15;;;13887:46;13928:4;13887:36;13903:19;13887:4;:11;;;:15;;:36;;;;:::i;:46::-;:50;;:67::i;:::-;13880:74;13105:856;-1:-1:-1;;;;;;;13105:856:15:o;3844:30::-;;;;:::o;14129:99::-;14181:16;14192:4;14181:10;:16::i;:::-;14207:14;14216:4;14207:8;:14::i;26810:112::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26886:15:15::1;:29:::0;26810:112::o;151:42:9:-;;;;;;;;;;;;;;;:::o;3415:28:15:-;;;;;;;;;;3522:24;;;;:::o;27099:112::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27175:15:15::1;:29:::0;27099:112::o;3898:35::-;;;;:::o;26040:96::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;26108:11:15::1;:21:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26040:96::o;2770:24::-;;;;;;:::o;11939:1094::-;12099:14;12127:17;12158:13;12185:14;12213:19;12257:18;12278:25;12292:5;12299:3;12278:13;:25::i;:::-;12257:46;;12313:14;12342:100;12413:15;;12342:49;12379:11;12342:32;12357:16;;12342:10;:14;;:32;;;;:::i;:100::-;12313:129;;12452:30;12485:42;12504:8;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12504:22:15;12485:8;;:14;;;;;;;;:8;;;;;:12;;:14;;;;;12504:22;;12485:14;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12485:14:15;;:18;:42::i;:::-;12452:75;;12567:6;12542:22;:31;12538:489;;;12598:1;12589:10;;12625:22;12613:34;;12669:1;12661:9;;12693:1;12684:10;;12722:1;12708:15;;12538:489;;;12763:36;12795:3;12763:27;12774:15;;12763:6;:10;;:27;;;;:::i;:36::-;12754:45;;12825:6;12813:18;;12853:35;12884:3;12853:26;12864:14;;12853:6;:10;;:26;;;;:::i;:35::-;12845:43;;12911:36;12943:3;12911:27;12922:15;;12911:6;:10;;:27;;;;:::i;:36::-;12902:45;;12975:41;13012:3;12975:32;12986:20;;12975:6;:10;;:32;;;;:::i;:41::-;12961:55;;12538:489;11939:1094;;;;;;;;;;;;:::o;3339:35::-;;;;;;;;;;4337:44;;;;;;;;;;;;;;;:::o;4015:42::-;;;;;;;;;;;;;:::o;316:98:9:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:18:9::1;;;::::0;;;403:4:::1;382:18;::::0;;;;;;;:25;;;::::1;::::0;;::::1;::::0;;316:98::o;3380:29:15:-;;;;;;;;;;2820:22;;;;;;:::o;4275:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16007:248::-;16162:21;;;;16106:7;16162:21;;;:14;:21;;;;;;;;16205:25;;;;;;:17;;;;:25;;;;;;16007:248::o;27251:129::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27335:20:15::1;:38:::0;27251:129::o;2984:26::-;;;;;;:::o;3731:30::-;;;;:::o;29632:128::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29716:8:15::1;::::0;:37:::1;::::0;;;;;:8:::1;:37:::0;;::::1;;::::0;::::1;::::0;;;:8;;;::::1;::::0;:26:::1;::::0;:37;;;;;:8:::1;::::0;:37;;;;;;;:8;;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29632:128:::0;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;26956:108:15:-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;27030:14:15::1;:27:::0;26956:108::o;29404:107::-;255:10:9;244:22;;;;:10;:22;;;;;;;;;:47;;-1:-1:-1;281:10:9;270:7;:5;:7::i;:::-;:21;;;244:47;236:56;;;;;;29481:9:15::1;:23:::0;29404:107::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:1;3538:215;-1:-1:-1;;;3538:215:1:o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14288:1160:15;14339:21;14363:8;14372:4;14363:14;;;;;;;;;;;;;;;;14411;;;:8;:14;;;;;;14426:10;14411:26;;;;;;;14452:11;;14363:14;;;;;;;;-1:-1:-1;14452:15:15;14448:994;;14483:15;14517:110;14594:4;:15;;;14517:51;14563:4;14517:41;14533:4;:24;;;14517:4;:11;;;:15;;:41;;;;:::i;:110::-;14661:8;;:33;;;;;;14688:4;14661:33;;;;;;14483:144;;-1:-1:-1;14641:17:15;;14661:8;;;;;:18;;:33;;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14661:33:15;;-1:-1:-1;14713:19:15;;;14709:77;;;14762:9;14752:19;;14709:77;14804:11;;14800:548;;14835:8;;:38;;;;;;14853:10;14835:38;;;;;;;;;;;;:8;;;;;:17;;:38;;;;;;;;;;;;;;;:8;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14961:21:15;;14935:22;;;;14891:18;;-1:-1:-1;14931:259:15;;15019:93;15087:3;15019:38;15031:25;;15019:7;:11;;:38;;;;:::i;:93::-;15134:8;;:37;;;;;;15148:10;15134:37;;;;;;;;;;;;15006:106;;-1:-1:-1;15134:8:15;;;;;:13;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:259;15233:12;15208:22;;;:37;15269:64;;;;;;;;;;;;;;15307:4;;15295:10;;15269:64;;;;;;;;;;;14800:548;;15396:24;;;;15380:11;;:51;;15426:4;;15380:41;;:15;:41::i;:51::-;15362:15;;;:69;-1:-1:-1;;14448:994:15;14288:1160;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;704:175:4:-;813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:23;813:58;;;786:86;;806:5;;786:19;:86::i;598:104:6:-;685:10;598:104;:::o;885:203:4:-;1012:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:27;1012:68;;;985:96;;1005:5;;985:19;:96::i;:::-;885:203;;;;:::o;2967:751::-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:4;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:4;3616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3581:193:5;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;3581:193;-1:-1:-1;;;;3581:193:5:o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:5;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;"
    },
    "contracts/Pit.sol:Pit": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "contract IERC20",
              "name": "_govToken",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "enter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_share",
              "type": "uint256"
            }
          ],
          "name": "leave",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b50604051620016b4380380620016b4833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd9160039185019062000210565b508051620001d390600490602084019062000210565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff19909416601217939093169290921790915550620002ac915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b6113f880620002bc6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806367dfd4c91161008c578063a457c2d711610066578063a457c2d7146102f8578063a59f3e0c14610331578063a9059cbb1461034e578063dd62ed3e14610387576100ea565b806367dfd4c91461029e57806370a08231146102bd57806395d89b41146102f0576100ea565b806318160ddd116100c857806318160ddd146101ea57806323b872dd14610204578063313ce567146102475780633950935114610265576100ea565b806305268cff146100ef57806306fdde0314610120578063095ea7b31461019d575b600080fd5b6100f76103c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101286103e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d6600480360360408110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610497565b604080519115158252519081900360200190f35b6101f26104b5565b60408051918252519081900360200190f35b6101d66004803603606081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104bb565b61024f61055c565b6040805160ff9092168252519081900360200190f35b6101d66004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610565565b6102bb600480360360208110156102b457600080fd5b50356105c0565b005b6101f2600480360360208110156102d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610752565b61012861077a565b6101d66004803603604081101561030e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f9565b6102bb6004803603602081101561034757600080fd5b503561086e565b6101d66004803603604081101561036457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109df565b6101f26004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109f3565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b60006104ab6104a4610a2b565b8484610a2f565b5060015b92915050565b60025490565b60006104c8848484610b76565b610552846104d4610a2b565b61054d8560405180606001604052806028815260200161130c6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061051f610a2b565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d46565b610a2f565b5060019392505050565b60055460ff1690565b60006104ab610572610a2b565b8461054d8560016000610583610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610df7565b60006105ca6104b5565b9050600061069782610691600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d602081101561068857600080fd5b50518690610e72565b90610ee5565b90506106a33384610f66565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d602081101561074b57600080fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b60006104ab610806610a2b565b8461054d8560405180606001604052806025815260200161139e6025913960016000610830610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d46565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d602081101561090e57600080fd5b50519050600061091c6104b5565b9050801580610929575081155b1561093d5761093833846110b0565b61095b565b600061094d836106918685610e72565b905061095933826110b0565b505b600554604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052905161010090920473ffffffffffffffffffffffffffffffffffffffff16916323b872dd916064808201926020929091908290030181600087803b15801561072157600080fd5b60006104ab6109ec610a2b565b8484610b76565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061137a6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112a36022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113556025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061125e6023913960400191505060405180910390fd5b610c598383836111e1565b610ca3816040518060600160405280602681526020016112c56026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610cdf9082610df7565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db4578181015183820152602001610d9c565b50505050905090810190601f168015610de15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082610e81575060006104af565b82820282848281610e8e57fe5b0414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112eb6021913960400191505060405180910390fd5b6000808211610f5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5e57fe5b049392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b610fde826000836111e1565b611028816040518060600160405280602281526020016112816022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461105b90826111e6565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61113e600083836111e1565b60025461114b9082610df7565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461117e9082610df7565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282111561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6212e531d08fca9b74ccf5cb63bd1450749425686c61d44a2a917774c6b62fe64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x16B4 CODESIZE SUB DUP1 PUSH3 0x16B4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP DUP6 SWAP3 POP DUP5 SWAP2 PUSH3 0x1BD SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x210 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D3 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x210 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP5 AND PUSH1 0x12 OR SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH3 0x2AC SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x253 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x283 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x283 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x283 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x266 JUMP JUMPDEST POP PUSH3 0x291 SWAP3 SWAP2 POP PUSH3 0x295 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x291 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x296 JUMP JUMPDEST PUSH2 0x13F8 DUP1 PUSH3 0x2BC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67DFD4C9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0xA59F3E0C EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x387 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x67DFD4C9 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2F0 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x265 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5268CFF EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x19D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x162 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x497 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x24F PUSH2 0x55C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST PUSH2 0x2BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5C0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x752 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST PUSH2 0x2BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86E JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x48D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x48D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x470 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x4A4 PUSH2 0xA2B JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA2F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C8 DUP5 DUP5 DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x552 DUP5 PUSH2 0x4D4 PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x54D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130C PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x51F PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x572 PUSH2 0xA2B JUMP JUMPDEST DUP5 PUSH2 0x54D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x583 PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xDF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CA PUSH2 0x4B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x697 DUP3 PUSH2 0x691 PUSH1 0x5 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x672 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP7 SWAP1 PUSH2 0xE72 JUMP JUMPDEST SWAP1 PUSH2 0xEE5 JUMP JUMPDEST SWAP1 POP PUSH2 0x6A3 CALLER DUP5 PUSH2 0xF66 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x735 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x48D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x48D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x806 PUSH2 0xA2B JUMP JUMPDEST DUP5 PUSH2 0x54D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x139E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x830 PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x91C PUSH2 0x4B5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x929 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x93D JUMPI PUSH2 0x938 CALLER DUP5 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x95B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94D DUP4 PUSH2 0x691 DUP7 DUP6 PUSH2 0xE72 JUMP JUMPDEST SWAP1 POP PUSH2 0x959 CALLER DUP3 PUSH2 0x10B0 JUMP JUMPDEST POP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x9EC PUSH2 0xA2B JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x137A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A3 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1355 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x125E PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC59 DUP4 DUP4 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0xCA3 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C5 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCDF SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE81 JUMPI POP PUSH1 0x0 PUSH2 0x4AF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xE8E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xE6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12EB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xF55 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xF5E JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xFD2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1334 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFDE DUP3 PUSH1 0x0 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x1028 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1281 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x105B SWAP1 DUP3 PUSH2 0x11E6 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1132 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x113E PUSH1 0x0 DUP4 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x114B SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x117E SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636553616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F7745524332303A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220B621 0x2E MSTORE8 SAR ADDMOD 0xFC 0xA9 0xB7 0x4C 0xCF 0x5C 0xB6 EXTCODESIZE 0xD1 GASLIMIT SMOD 0x49 TIMESTAMP JUMP DUP7 0xC6 SAR DIFFICULTY LOG2 0xA9 OR PUSH24 0x4C6B62FE64736F6C634300060C0033000000000000000000 ",
          "sourceMap": "445:1915:16:-:0;;;571:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;2032:13:2;;571:164:16;;-1:-1:-1;682:5:16;;-1:-1:-1;689:7:16;;2032:13:2;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;;;;708:20:16;;::::1;2082:14:2::0;708:20:16::1;-1:-1:-1::0;;;;;;;;2082:14:2;;;2094:2;2082:14;708:20:16;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;445:1915:16;;-1:-1:-1;;445:1915:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;445:1915:16;;;-1:-1:-1;445:1915:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c806367dfd4c91161008c578063a457c2d711610066578063a457c2d7146102f8578063a59f3e0c14610331578063a9059cbb1461034e578063dd62ed3e14610387576100ea565b806367dfd4c91461029e57806370a08231146102bd57806395d89b41146102f0576100ea565b806318160ddd116100c857806318160ddd146101ea57806323b872dd14610204578063313ce567146102475780633950935114610265576100ea565b806305268cff146100ef57806306fdde0314610120578063095ea7b31461019d575b600080fd5b6100f76103c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101286103e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d6600480360360408110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610497565b604080519115158252519081900360200190f35b6101f26104b5565b60408051918252519081900360200190f35b6101d66004803603606081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104bb565b61024f61055c565b6040805160ff9092168252519081900360200190f35b6101d66004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610565565b6102bb600480360360208110156102b457600080fd5b50356105c0565b005b6101f2600480360360208110156102d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610752565b61012861077a565b6101d66004803603604081101561030e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f9565b6102bb6004803603602081101561034757600080fd5b503561086e565b6101d66004803603604081101561036457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109df565b6101f26004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109f3565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b60006104ab6104a4610a2b565b8484610a2f565b5060015b92915050565b60025490565b60006104c8848484610b76565b610552846104d4610a2b565b61054d8560405180606001604052806028815260200161130c6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061051f610a2b565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d46565b610a2f565b5060019392505050565b60055460ff1690565b60006104ab610572610a2b565b8461054d8560016000610583610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610df7565b60006105ca6104b5565b9050600061069782610691600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d602081101561068857600080fd5b50518690610e72565b90610ee5565b90506106a33384610f66565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d602081101561074b57600080fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b60006104ab610806610a2b565b8461054d8560405180606001604052806025815260200161139e6025913960016000610830610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d46565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d602081101561090e57600080fd5b50519050600061091c6104b5565b9050801580610929575081155b1561093d5761093833846110b0565b61095b565b600061094d836106918685610e72565b905061095933826110b0565b505b600554604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052905161010090920473ffffffffffffffffffffffffffffffffffffffff16916323b872dd916064808201926020929091908290030181600087803b15801561072157600080fd5b60006104ab6109ec610a2b565b8484610b76565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061137a6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112a36022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113556025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061125e6023913960400191505060405180910390fd5b610c598383836111e1565b610ca3816040518060600160405280602681526020016112c56026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610cdf9082610df7565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db4578181015183820152602001610d9c565b50505050905090810190601f168015610de15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082610e81575060006104af565b82820282848281610e8e57fe5b0414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112eb6021913960400191505060405180910390fd5b6000808211610f5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5e57fe5b049392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b610fde826000836111e1565b611028816040518060600160405280602281526020016112816022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461105b90826111e6565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61113e600083836111e1565b60025461114b9082610df7565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461117e9082610df7565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282111561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6212e531d08fca9b74ccf5cb63bd1450749425686c61d44a2a917774c6b62fe64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67DFD4C9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0xA59F3E0C EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x387 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x67DFD4C9 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2F0 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x265 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5268CFF EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x19D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x162 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x497 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x24F PUSH2 0x55C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST PUSH2 0x2BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5C0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x752 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST PUSH2 0x2BB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86E JUMP JUMPDEST PUSH2 0x1D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x48D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x48D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x470 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x4A4 PUSH2 0xA2B JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA2F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C8 DUP5 DUP5 DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x552 DUP5 PUSH2 0x4D4 PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x54D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130C PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x51F PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x572 PUSH2 0xA2B JUMP JUMPDEST DUP5 PUSH2 0x54D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x583 PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xDF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CA PUSH2 0x4B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x697 DUP3 PUSH2 0x691 PUSH1 0x5 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x672 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP7 SWAP1 PUSH2 0xE72 JUMP JUMPDEST SWAP1 PUSH2 0xEE5 JUMP JUMPDEST SWAP1 POP PUSH2 0x6A3 CALLER DUP5 PUSH2 0xF66 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x735 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x48D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x462 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x48D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x806 PUSH2 0xA2B JUMP JUMPDEST DUP5 PUSH2 0x54D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x139E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x830 PUSH2 0xA2B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x91C PUSH2 0x4B5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x929 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x93D JUMPI PUSH2 0x938 CALLER DUP5 PUSH2 0x10B0 JUMP JUMPDEST PUSH2 0x95B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94D DUP4 PUSH2 0x691 DUP7 DUP6 PUSH2 0xE72 JUMP JUMPDEST SWAP1 POP PUSH2 0x959 CALLER DUP3 PUSH2 0x10B0 JUMP JUMPDEST POP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH2 0x9EC PUSH2 0xA2B JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x137A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A3 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1355 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x125E PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC59 DUP4 DUP4 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0xCA3 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C5 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCDF SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE81 JUMPI POP PUSH1 0x0 PUSH2 0x4AF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xE8E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xE6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12EB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xF55 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xF5E JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xFD2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1334 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFDE DUP3 PUSH1 0x0 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x1028 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1281 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x105B SWAP1 DUP3 PUSH2 0x11E6 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1132 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x113E PUSH1 0x0 DUP4 DUP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x114B SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x117E SWAP1 DUP3 PUSH2 0xDF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636553616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F7745524332303A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220B621 0x2E MSTORE8 SAR ADDMOD 0xFC 0xA9 0xB7 0x4C 0xCF 0x5C 0xB6 EXTCODESIZE 0xD1 GASLIMIT SMOD 0x49 TIMESTAMP JUMP DUP7 0xC6 SAR DIFFICULTY LOG2 0xA9 OR PUSH24 0x4C6B62FE64736F6C634300060C0033000000000000000000 ",
          "sourceMap": "445:1915:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;1947:411:16:-;;;;;;;;;;;;;;;;-1:-1:-1;1947:411:16;;:::i;:::-;;3399:125:2;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;854:962:16:-;;;;;;;;;;;;;;;;-1:-1:-1;854:962:16;;:::i;3727:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;505:22:16:-;;;;;;;;;:::o;2168:89:2:-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;1947:411:16:-;2055:19;2077:13;:11;:13::i;:::-;2055:35;;2182:12;2209:62;2259:11;2209:45;2220:8;;;;;;;;;;;:18;;;2247:4;2220:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2220:33:16;2209:6;;:10;:45::i;:::-;:49;;:62::i;:::-;2182:89;;2281:25;2287:10;2299:6;2281:5;:25::i;:::-;2316:8;;:35;;;;;;2334:10;2316:35;;;;;;;;;;;;:8;;;;;;;:17;;:35;;;;;;;;;;;;;;;-1:-1:-1;2316:8:16;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1947:411:16:o;3399:125:2:-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;854:962:16:-;1003:8;;:33;;;;;;1030:4;1003:33;;;;;;-1:-1:-1;;1003:8:16;;;;;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:33:16;;-1:-1:-1;1106:19:16;1128:13;:11;:13::i;:::-;1106:35;-1:-1:-1;1230:16:16;;;:45;;-1:-1:-1;1250:25:16;;1230:45;1226:465;;;1291:26;1297:10;1309:7;1291:5;:26::i;:::-;1226:465;;;1578:12;1593:50;1622:20;1593:24;:7;1605:11;1593;:24::i;:50::-;1578:65;;1657:23;1663:10;1675:4;1657:5;:23::i;:::-;1226:465;;1752:8;;:57;;;;;;1774:10;1752:57;;;;1794:4;1752:57;;;;;;;;;;;;:8;;;;;;;:21;;:57;;;;;;;;;;;;;;;-1:-1:-1;1752:8:16;:57;;;;;;;;;;3727:172:2;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;3538:215::-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;8522:410:2:-;8605:21;;;8597:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8675:49;8696:7;8713:1;8717:6;8675:20;:49::i;:::-;8756:68;8779:6;8756:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8735:18;;;:9;:18;;;;;;;;;;:89;8849:12;;:24;;8866:6;8849:16;:24::i;:::-;8834:12;:39;8888:37;;;;;;;;8914:1;;8888:37;;;;;;;;;;;;;8522:410;;:::o;7832:370::-;7915:21;;;7907:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;8113:18;;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;8092:18;;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;10701:92::-;;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"_govToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_share\",\"type\":\"uint256\"}],\"name\":\"leave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Pit.sol\":\"Pit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/Pit.sol\":{\"keccak256\":\"0x8284dc6af2fb89d15b6b2e4ef68f0d95f6ebd399192166e5facf9991c121b3e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bc28a909df09420811076aacad4ee757a9469cb0583b53400cdb53e17d7d7a9\",\"dweb:/ipfs/QmPh9WQAeB9LHFWNopgGd4AgnGB7nrkPPZvaTkmCBAcjtm\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "contract IERC20",
              "name": "_govToken",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "enter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_share",
              "type": "uint256"
            }
          ],
          "name": "leave",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040523480156200001157600080fd5b50604051620016b4380380620016b4833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd9160039185019062000210565b508051620001d390600490602084019062000210565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff19909416601217939093169290921790915550620002ac915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b6113f880620002bc6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806367dfd4c91161008c578063a457c2d711610066578063a457c2d7146102f8578063a59f3e0c14610331578063a9059cbb1461034e578063dd62ed3e14610387576100ea565b806367dfd4c91461029e57806370a08231146102bd57806395d89b41146102f0576100ea565b806318160ddd116100c857806318160ddd146101ea57806323b872dd14610204578063313ce567146102475780633950935114610265576100ea565b806305268cff146100ef57806306fdde0314610120578063095ea7b31461019d575b600080fd5b6100f76103c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101286103e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d6600480360360408110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610497565b604080519115158252519081900360200190f35b6101f26104b5565b60408051918252519081900360200190f35b6101d66004803603606081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104bb565b61024f61055c565b6040805160ff9092168252519081900360200190f35b6101d66004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610565565b6102bb600480360360208110156102b457600080fd5b50356105c0565b005b6101f2600480360360208110156102d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610752565b61012861077a565b6101d66004803603604081101561030e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f9565b6102bb6004803603602081101561034757600080fd5b503561086e565b6101d66004803603604081101561036457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109df565b6101f26004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109f3565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b60006104ab6104a4610a2b565b8484610a2f565b5060015b92915050565b60025490565b60006104c8848484610b76565b610552846104d4610a2b565b61054d8560405180606001604052806028815260200161130c6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061051f610a2b565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d46565b610a2f565b5060019392505050565b60055460ff1690565b60006104ab610572610a2b565b8461054d8560016000610583610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610df7565b60006105ca6104b5565b9050600061069782610691600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d602081101561068857600080fd5b50518690610e72565b90610ee5565b90506106a33384610f66565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d602081101561074b57600080fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b60006104ab610806610a2b565b8461054d8560405180606001604052806025815260200161139e6025913960016000610830610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d46565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d602081101561090e57600080fd5b50519050600061091c6104b5565b9050801580610929575081155b1561093d5761093833846110b0565b61095b565b600061094d836106918685610e72565b905061095933826110b0565b505b600554604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052905161010090920473ffffffffffffffffffffffffffffffffffffffff16916323b872dd916064808201926020929091908290030181600087803b15801561072157600080fd5b60006104ab6109ec610a2b565b8484610b76565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061137a6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112a36022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113556025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061125e6023913960400191505060405180910390fd5b610c598383836111e1565b610ca3816040518060600160405280602681526020016112c56026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610cdf9082610df7565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db4578181015183820152602001610d9c565b50505050905090810190601f168015610de15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082610e81575060006104af565b82820282848281610e8e57fe5b0414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112eb6021913960400191505060405180910390fd5b6000808211610f5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5e57fe5b049392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b610fde826000836111e1565b611028816040518060600160405280602281526020016112816022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461105b90826111e6565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61113e600083836111e1565b60025461114b9082610df7565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461117e9082610df7565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282111561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6212e531d08fca9b74ccf5cb63bd1450749425686c61d44a2a917774c6b62fe64736f6c634300060c0033",
      "bin": "60806040523480156200001157600080fd5b50604051620016b4380380620016b4833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd9160039185019062000210565b508051620001d390600490602084019062000210565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff19909416601217939093169290921790915550620002ac915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b6113f880620002bc6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806367dfd4c91161008c578063a457c2d711610066578063a457c2d7146102f8578063a59f3e0c14610331578063a9059cbb1461034e578063dd62ed3e14610387576100ea565b806367dfd4c91461029e57806370a08231146102bd57806395d89b41146102f0576100ea565b806318160ddd116100c857806318160ddd146101ea57806323b872dd14610204578063313ce567146102475780633950935114610265576100ea565b806305268cff146100ef57806306fdde0314610120578063095ea7b31461019d575b600080fd5b6100f76103c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101286103e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d6600480360360408110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610497565b604080519115158252519081900360200190f35b6101f26104b5565b60408051918252519081900360200190f35b6101d66004803603606081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104bb565b61024f61055c565b6040805160ff9092168252519081900360200190f35b6101d66004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610565565b6102bb600480360360208110156102b457600080fd5b50356105c0565b005b6101f2600480360360208110156102d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610752565b61012861077a565b6101d66004803603604081101561030e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f9565b6102bb6004803603602081101561034757600080fd5b503561086e565b6101d66004803603604081101561036457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109df565b6101f26004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109f3565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b60006104ab6104a4610a2b565b8484610a2f565b5060015b92915050565b60025490565b60006104c8848484610b76565b610552846104d4610a2b565b61054d8560405180606001604052806028815260200161130c6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061051f610a2b565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d46565b610a2f565b5060019392505050565b60055460ff1690565b60006104ab610572610a2b565b8461054d8560016000610583610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610df7565b60006105ca6104b5565b9050600061069782610691600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d602081101561068857600080fd5b50518690610e72565b90610ee5565b90506106a33384610f66565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d602081101561074b57600080fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b60006104ab610806610a2b565b8461054d8560405180606001604052806025815260200161139e6025913960016000610830610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d46565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d602081101561090e57600080fd5b50519050600061091c6104b5565b9050801580610929575081155b1561093d5761093833846110b0565b61095b565b600061094d836106918685610e72565b905061095933826110b0565b505b600554604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052905161010090920473ffffffffffffffffffffffffffffffffffffffff16916323b872dd916064808201926020929091908290030181600087803b15801561072157600080fd5b60006104ab6109ec610a2b565b8484610b76565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061137a6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112a36022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113556025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061125e6023913960400191505060405180910390fd5b610c598383836111e1565b610ca3816040518060600160405280602681526020016112c56026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610cdf9082610df7565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db4578181015183820152602001610d9c565b50505050905090810190601f168015610de15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082610e81575060006104af565b82820282848281610e8e57fe5b0414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112eb6021913960400191505060405180910390fd5b6000808211610f5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5e57fe5b049392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b610fde826000836111e1565b611028816040518060600160405280602281526020016112816022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461105b90826111e6565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61113e600083836111e1565b60025461114b9082610df7565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461117e9082610df7565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282111561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6212e531d08fca9b74ccf5cb63bd1450749425686c61d44a2a917774c6b62fe64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c806367dfd4c91161008c578063a457c2d711610066578063a457c2d7146102f8578063a59f3e0c14610331578063a9059cbb1461034e578063dd62ed3e14610387576100ea565b806367dfd4c91461029e57806370a08231146102bd57806395d89b41146102f0576100ea565b806318160ddd116100c857806318160ddd146101ea57806323b872dd14610204578063313ce567146102475780633950935114610265576100ea565b806305268cff146100ef57806306fdde0314610120578063095ea7b31461019d575b600080fd5b6100f76103c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101286103e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d6600480360360408110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610497565b604080519115158252519081900360200190f35b6101f26104b5565b60408051918252519081900360200190f35b6101d66004803603606081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104bb565b61024f61055c565b6040805160ff9092168252519081900360200190f35b6101d66004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610565565b6102bb600480360360208110156102b457600080fd5b50356105c0565b005b6101f2600480360360208110156102d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610752565b61012861077a565b6101d66004803603604081101561030e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f9565b6102bb6004803603602081101561034757600080fd5b503561086e565b6101d66004803603604081101561036457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109df565b6101f26004803603604081101561039d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109f3565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b60006104ab6104a4610a2b565b8484610a2f565b5060015b92915050565b60025490565b60006104c8848484610b76565b610552846104d4610a2b565b61054d8560405180606001604052806028815260200161130c6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061051f610a2b565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d46565b610a2f565b5060019392505050565b60055460ff1690565b60006104ab610572610a2b565b8461054d8560016000610583610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610df7565b60006105ca6104b5565b9050600061069782610691600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d602081101561068857600080fd5b50518690610e72565b90610ee5565b90506106a33384610f66565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d602081101561074b57600080fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561048d5780601f106104625761010080835404028352916020019161048d565b60006104ab610806610a2b565b8461054d8560405180606001604052806025815260200161139e6025913960016000610830610a2b565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d46565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d602081101561090e57600080fd5b50519050600061091c6104b5565b9050801580610929575081155b1561093d5761093833846110b0565b61095b565b600061094d836106918685610e72565b905061095933826110b0565b505b600554604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052905161010090920473ffffffffffffffffffffffffffffffffffffffff16916323b872dd916064808201926020929091908290030181600087803b15801561072157600080fd5b60006104ab6109ec610a2b565b8484610b76565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061137a6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112a36022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113556025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061125e6023913960400191505060405180910390fd5b610c598383836111e1565b610ca3816040518060600160405280602681526020016112c56026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610cdf9082610df7565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db4578181015183820152602001610d9c565b50505050905090810190601f168015610de15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082610e81575060006104af565b82820282848281610e8e57fe5b0414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112eb6021913960400191505060405180910390fd5b6000808211610f5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5e57fe5b049392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b610fde826000836111e1565b611028816040518060600160405280602281526020016112816022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610d46565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461105b90826111e6565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61113e600083836111e1565b60025461114b9082610df7565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461117e9082610df7565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282111561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6212e531d08fca9b74ccf5cb63bd1450749425686c61d44a2a917774c6b62fe64736f6c634300060c0033",
      "srcmap": "445:1915:16:-:0;;;571:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:164:16;;;;;;;2032:13:2;;571:164:16;;-1:-1:-1;682:5:16;;-1:-1:-1;689:7:16;;2032:13:2;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;;;;708:20:16;;::::1;2082:14:2::0;708:20:16::1;-1:-1:-1::0;;;;;;;;2082:14:2;;;2094:2;2082:14;708:20:16;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;445:1915:16;;-1:-1:-1;;445:1915:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;445:1915:16;;;-1:-1:-1;445:1915:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "445:1915:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;1947:411:16:-;;;;;;;;;;;;;;;;-1:-1:-1;1947:411:16;;:::i;:::-;;3399:125:2;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;854:962:16:-;;;;;;;;;;;;;;;;-1:-1:-1;854:962:16;;:::i;3727:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;505:22:16:-;;;;;;;;;:::o;2168:89:2:-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;1947:411:16:-;2055:19;2077:13;:11;:13::i;:::-;2055:35;;2182:12;2209:62;2259:11;2209:45;2220:8;;;;;;;;;;;:18;;;2247:4;2220:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2220:33:16;2209:6;;:10;:45::i;:::-;:49;;:62::i;:::-;2182:89;;2281:25;2287:10;2299:6;2281:5;:25::i;:::-;2316:8;;:35;;;;;;2334:10;2316:35;;;;;;;;;;;;:8;;;;;;;:17;;:35;;;;;;;;;;;;;;;-1:-1:-1;2316:8:16;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1947:411:16:o;3399:125:2:-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;854:962:16:-;1003:8;;:33;;;;;;1030:4;1003:33;;;;;;-1:-1:-1;;1003:8:16;;;;;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:33:16;;-1:-1:-1;1106:19:16;1128:13;:11;:13::i;:::-;1106:35;-1:-1:-1;1230:16:16;;;:45;;-1:-1:-1;1250:25:16;;1230:45;1226:465;;;1291:26;1297:10;1309:7;1291:5;:26::i;:::-;1226:465;;;1578:12;1593:50;1622:20;1593:24;:7;1605:11;1593;:24::i;:50::-;1578:65;;1657:23;1663:10;1675:4;1657:5;:23::i;:::-;1226:465;;1752:8;;:57;;;;;;1774:10;1752:57;;;;1794:4;1752:57;;;;;;;;;;;;:8;;;;;;;:21;;:57;;;;;;;;;;;;;;;-1:-1:-1;1752:8:16;:57;;;;;;;;;;3727:172:2;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;3538:215::-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;8522:410:2:-;8605:21;;;8597:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8675:49;8696:7;8713:1;8717:6;8675:20;:49::i;:::-;8756:68;8779:6;8756:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8735:18;;;:9;:18;;;;;;;;;;:89;8849:12;;:24;;8866:6;8849:16;:24::i;:::-;8834:12;:39;8888:37;;;;;;;;8914:1;;8888:37;;;;;;;;;;;;;8522:410;;:::o;7832:370::-;7915:21;;;7907:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;8113:18;;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;8092:18;;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;10701:92::-;;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o"
    },
    "contracts/PitBreeder.sol:PitBreeder": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_pit",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_govToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_weth",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "name": "LogBridgeSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "server",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountGovToken",
              "type": "uint256"
            }
          ],
          "name": "LogConvert",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "bridgeFor",
          "outputs": [
            {
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "convert",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "token0",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "token1",
              "type": "address[]"
            }
          ],
          "name": "convertMultiple",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "contract IUniswapV2Factory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pit",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "name": "setBridge",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "61010060405234801561001157600080fd5b50604051611ffe380380611ffe8339818101604052608081101561003457600080fd5b508051602082015160408301516060909301519192909160006100556100ce565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e0526100d2565b3390565b60805160601c60a05160601c60c05160601c60e05160601c611e7d610181600039806105a952806107475280610f375280610f8e528061118152806111d85280611201528061122e528061128552806112ae5250806105525280610e7a5280610ee65280610fee528061105a52806110be528061112a528061151352508061080e5280610f08528061107c528061114c52806115355250806107ea52806109d552806115655250611e7d6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a761a93911610076578063c45a01551161005b578063c45a01551461024e578063f03c7c6e14610256578063f2fde38b1461025e576100a3565b8063a761a939146101e0578063bd1b820c14610213576100a3565b8063303e6aa4146100a8578063715018a61461016c5780638da5cb5b146101745780639d22ae8c146101a5575b600080fd5b61016a600480360360408110156100be57600080fd5b8101906020810181356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184602083028401116401000000008311171561010d57600080fd5b91939092909160208101903564010000000081111561012b57600080fd5b82018360208201111561013d57600080fd5b8035906020019184602083028401116401000000008311171561015f57600080fd5b509092509050610291565b005b61016a610375565b61017c61048c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016a600480360360408110156101bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104a8565b61017c600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610717565b61016a6004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076c565b61017c6107e8565b61017c61080c565b61016a6004803603602081101561027457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610830565b3332146102ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b8260005b8181101561036d5761036586868381811061031a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061034357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166109d1565b600101610303565b505050505050565b61037d610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661039b61048c565b73ffffffffffffffffffffffffffffffffffffffff161461041d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104b0610d9e565b73ffffffffffffffffffffffffffffffffffffffff166104ce61048c565b73ffffffffffffffffffffffffffffffffffffffff161461055057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156105f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561063057508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61069b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a20496e76616c696420627269646765000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660008181526001602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040902054168061076757507f00000000000000000000000000000000000000000000000000000000000000005b919050565b3332146107da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b6107e482826109d1565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610838610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661085661048c565b73ffffffffffffffffffffffffffffffffffffffff16146108d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610944576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611db16026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a20496e76616c696420706169720000000000000000604482015290519081900360640190fd5b610bdd818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190610da2565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015610c4857600080fd5b505af1158015610c5c573d6000803e3d6000fd5b505050506040513d6040811015610c7257600080fd5b508051602091820151604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905192955090935073ffffffffffffffffffffffffffffffffffffffff861692630dfe168192600480840193829003018186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d6020811015610d0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff868116911614610d2f57905b73ffffffffffffffffffffffffffffffffffffffff808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610d7a8b8b8484610e34565b60408051938452602084019290925282820152519081900360600190a45050505050565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e2f9084906113b6565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fec576000610e76848461148e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f3557610f2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610da2565b809150610fe6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610fba57610fb37f00000000000000000000000000000000000000000000000000000000000000008261150b565b9150610fe6565b6000610fc587610717565b9050610fd387828430611560565b9150610fe28182846000610e34565b9250505b506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bc576110a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610da2565b6110b5836110af868561150b565b9061148e565b90506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117f5761117173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610da2565b6110b5826110af878661150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561122c576110b57f0000000000000000000000000000000000000000000000000000000000000000611227856110af887f00000000000000000000000000000000000000000000000000000000000000008830611560565b61150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112d4576110b57f0000000000000000000000000000000000000000000000000000000000000000611227846110af897f00000000000000000000000000000000000000000000000000000000000000008930611560565b60006112df86610717565b905060006112ec86610717565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113405761133982876113338a868a30611560565b87610e34565b92506113ab565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138b576113398782876113868a868a30611560565b610e34565b6113a8828261139c8a868a30611560565b6113868a868a30611560565b92505b50505b949350505050565b6060611418826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611aba9092919063ffffffff16565b805190915015610e2f5780806020019051602081101561143757600080fd5b5051610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e1e602a913960400191505060405180910390fd5b60008282018381101561150257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000611559837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611560565b9392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d602081101561163257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166116b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a2043616e6e6f7420636f6e76657274000000000000604482015290519081900360640190fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d606081101561172b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000611759876103e5611ac9565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8a811691161415611952576117fd816110af856103e8611ac9565b6118138361180d8a6103e5611ac9565b90611ac9565b8161181a57fe5b04945061183e73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018181526044830189905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156118e65781810151838201526020016118ce565b50505050905090810190601f1680156119135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b50505050611aae565b611962816110af846103e8611ac9565b6119728461180d8a6103e5611ac9565b8161197957fe5b04945061199d73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018881526044830182905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611a46578181015183820152602001611a2e565b50505050905090810190601f168015611a735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b505050505b50505050949350505050565b60606113ae8484600085611b3c565b600082611ad857506000611505565b82820282848281611ae557fe5b0414611502576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611dfd6021913960400191505060405180910390fd5b606082471015611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611dd76026913960400191505060405180910390fd5b611ba085611cec565b611c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611c7557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c38565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b50915091506113a8828286611cf2565b3b151590565b60608315611d01575081611559565b825115611d115782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d75578181015183820152602001611d5d565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220479d6823a9bb30ecdb96d1d2ca12107a3421eb2f5984f3a9e4b9ec9af04bdd1564736f6c634300060c0033",
          "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1FFE CODESIZE SUB DUP1 PUSH2 0x1FFE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 PUSH2 0x55 PUSH2 0xCE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP3 DUP5 SHL DUP4 AND PUSH1 0xA0 MSTORE SWAP1 DUP4 SHL DUP3 AND PUSH1 0xC0 MSTORE SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH2 0xD2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x1E7D PUSH2 0x181 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x5A9 MSTORE DUP1 PUSH2 0x747 MSTORE DUP1 PUSH2 0xF37 MSTORE DUP1 PUSH2 0xF8E MSTORE DUP1 PUSH2 0x1181 MSTORE DUP1 PUSH2 0x11D8 MSTORE DUP1 PUSH2 0x1201 MSTORE DUP1 PUSH2 0x122E MSTORE DUP1 PUSH2 0x1285 MSTORE DUP1 PUSH2 0x12AE MSTORE POP DUP1 PUSH2 0x552 MSTORE DUP1 PUSH2 0xE7A MSTORE DUP1 PUSH2 0xEE6 MSTORE DUP1 PUSH2 0xFEE MSTORE DUP1 PUSH2 0x105A MSTORE DUP1 PUSH2 0x10BE MSTORE DUP1 PUSH2 0x112A MSTORE DUP1 PUSH2 0x1513 MSTORE POP DUP1 PUSH2 0x80E MSTORE DUP1 PUSH2 0xF08 MSTORE DUP1 PUSH2 0x107C MSTORE DUP1 PUSH2 0x114C MSTORE DUP1 PUSH2 0x1535 MSTORE POP DUP1 PUSH2 0x7EA MSTORE DUP1 PUSH2 0x9D5 MSTORE DUP1 PUSH2 0x1565 MSTORE POP PUSH2 0x1E7D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA761A939 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF03C7C6E EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA761A939 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xBD1B820C EQ PUSH2 0x213 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x303E6AA4 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D22AE8C EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x291 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16A PUSH2 0x375 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x717 JUMP JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x76C JUMP JUMPDEST PUSH2 0x17C PUSH2 0x7E8 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x80C JUMP JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x830 JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0x2FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A206D7573742075736520454F410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH2 0x365 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x31A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x343 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x303 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x37D PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39B PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x41D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4B0 PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CE PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x550 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x630 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x69B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A20496E76616C696420627269646765000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x2E103AA707ACC565F9A1547341914802B2BFE977FD79C595209F248AE4B00613 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0x767 JUMPI POP PUSH32 0x0 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0x7DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A206D7573742075736520454F410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7E4 DUP3 DUP3 PUSH2 0x9D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x838 PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x856 PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x944 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DB1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A20496E76616C696420706169720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBDD DUP2 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 SWAP1 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDFE168100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP3 PUSH4 0xDFE1681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xD2F JUMPI SWAP1 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP1 DUP7 AND CALLER PUSH32 0xD06B1D7ED79B664D17472C6F6997B929F1ABE463CCCCB4E5B6A0038F2F730C15 DUP6 DUP6 PUSH2 0xD7A DUP12 DUP12 DUP5 DUP5 PUSH2 0xE34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xE2F SWAP1 DUP5 SWAP1 PUSH2 0x13B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 PUSH2 0xE76 DUP5 DUP5 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xF35 JUMPI PUSH2 0xF2D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xDA2 JUMP JUMPDEST DUP1 SWAP2 POP PUSH2 0xFE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xFBA JUMPI PUSH2 0xFB3 PUSH32 0x0 DUP3 PUSH2 0x150B JUMP JUMPDEST SWAP2 POP PUSH2 0xFE6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC5 DUP8 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP PUSH2 0xFD3 DUP8 DUP3 DUP5 ADDRESS PUSH2 0x1560 JUMP JUMPDEST SWAP2 POP PUSH2 0xFE2 DUP2 DUP3 DUP5 PUSH1 0x0 PUSH2 0xE34 JUMP JUMPDEST SWAP3 POP POP JUMPDEST POP PUSH2 0x13AE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10BC JUMPI PUSH2 0x10A1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP6 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x10B5 DUP4 PUSH2 0x10AF DUP7 DUP6 PUSH2 0x150B JUMP JUMPDEST SWAP1 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH2 0x13AE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x117F JUMPI PUSH2 0x1171 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x10B5 DUP3 PUSH2 0x10AF DUP8 DUP7 PUSH2 0x150B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x122C JUMPI PUSH2 0x10B5 PUSH32 0x0 PUSH2 0x1227 DUP6 PUSH2 0x10AF DUP9 PUSH32 0x0 DUP9 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0x150B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x12D4 JUMPI PUSH2 0x10B5 PUSH32 0x0 PUSH2 0x1227 DUP5 PUSH2 0x10AF DUP10 PUSH32 0x0 DUP10 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12DF DUP7 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12EC DUP7 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1340 JUMPI PUSH2 0x1339 DUP3 DUP8 PUSH2 0x1333 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST DUP8 PUSH2 0xE34 JUMP JUMPDEST SWAP3 POP PUSH2 0x13AB JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x138B JUMPI PUSH2 0x1339 DUP8 DUP3 DUP8 PUSH2 0x1386 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x13A8 DUP3 DUP3 PUSH2 0x139C DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0x1386 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1418 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1ABA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xE2F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xE2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1502 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1559 DUP4 PUSH32 0x0 DUP5 PUSH32 0x0 PUSH2 0x1560 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP8 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x161C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x16B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A2043616E6E6F7420636F6E76657274000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1715 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 PUSH2 0x1759 DUP8 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x1952 JUMPI PUSH2 0x17FD DUP2 PUSH2 0x10AF DUP6 PUSH2 0x3E8 PUSH2 0x1AC9 JUMP JUMPDEST PUSH2 0x1813 DUP4 PUSH2 0x180D DUP11 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST SWAP1 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x181A JUMPI INVALID JUMPDEST DIV SWAP5 POP PUSH2 0x183E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP6 DUP10 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP2 DUP11 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP13 SWAP5 DUP15 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 DUP6 ADD SWAP2 SWAP1 DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18CE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1913 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1949 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1AAE JUMP JUMPDEST PUSH2 0x1962 DUP2 PUSH2 0x10AF DUP5 PUSH2 0x3E8 PUSH2 0x1AC9 JUMP JUMPDEST PUSH2 0x1972 DUP5 PUSH2 0x180D DUP11 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x1979 JUMPI INVALID JUMPDEST DIV SWAP5 POP PUSH2 0x199D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP6 DUP10 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP9 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP2 DUP11 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP13 SWAP6 SWAP5 DUP15 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 DUP6 ADD SWAP2 SWAP1 DUP1 DUP4 DUP4 DUP11 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AE DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1B3C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1AD8 JUMPI POP PUSH1 0x0 PUSH2 0x1505 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1AE5 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1502 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFD PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1B97 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DD7 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BA0 DUP6 PUSH2 0x1CEC JUMP JUMPDEST PUSH2 0x1C0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1C75 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1CD7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1CDC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x13A8 DUP3 DUP3 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1D01 JUMPI POP DUP2 PUSH2 0x1559 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1D11 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D75 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D5D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1DA2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573733A20696E7375666669 PUSH4 0x69656E74 KECCAK256 PUSH3 0x616C61 PUSH15 0x636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A2646970667358221220479D6823 0xA9 0xBB ADDRESS 0xEC 0xDB SWAP7 0xD1 0xD2 0xCA SLT LT PUSH27 0x3421EB2F5984F3A9E4B9EC9AF04BDD1564736F6C634300060C0033 ",
          "sourceMap": "657:8437:17:-:0;;;1567:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1567:249:17;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;;;;;;;1700:37:17;;;;;;;;1747:10;;;;;;;1767:20;;;;;;;1797:12;;;;;;657:8437;;598:104:6;685:10;598:104;:::o;657:8437:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "7555": [
              {
                "length": 32,
                "start": 2026
              },
              {
                "length": 32,
                "start": 2517
              },
              {
                "length": 32,
                "start": 5477
              }
            ],
            "7557": [
              {
                "length": 32,
                "start": 2062
              },
              {
                "length": 32,
                "start": 3848
              },
              {
                "length": 32,
                "start": 4220
              },
              {
                "length": 32,
                "start": 4428
              },
              {
                "length": 32,
                "start": 5429
              }
            ],
            "7559": [
              {
                "length": 32,
                "start": 1362
              },
              {
                "length": 32,
                "start": 3706
              },
              {
                "length": 32,
                "start": 3814
              },
              {
                "length": 32,
                "start": 4078
              },
              {
                "length": 32,
                "start": 4186
              },
              {
                "length": 32,
                "start": 4286
              },
              {
                "length": 32,
                "start": 4394
              },
              {
                "length": 32,
                "start": 5395
              }
            ],
            "7561": [
              {
                "length": 32,
                "start": 1449
              },
              {
                "length": 32,
                "start": 1863
              },
              {
                "length": 32,
                "start": 3895
              },
              {
                "length": 32,
                "start": 3982
              },
              {
                "length": 32,
                "start": 4481
              },
              {
                "length": 32,
                "start": 4568
              },
              {
                "length": 32,
                "start": 4609
              },
              {
                "length": 32,
                "start": 4654
              },
              {
                "length": 32,
                "start": 4741
              },
              {
                "length": 32,
                "start": 4782
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a761a93911610076578063c45a01551161005b578063c45a01551461024e578063f03c7c6e14610256578063f2fde38b1461025e576100a3565b8063a761a939146101e0578063bd1b820c14610213576100a3565b8063303e6aa4146100a8578063715018a61461016c5780638da5cb5b146101745780639d22ae8c146101a5575b600080fd5b61016a600480360360408110156100be57600080fd5b8101906020810181356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184602083028401116401000000008311171561010d57600080fd5b91939092909160208101903564010000000081111561012b57600080fd5b82018360208201111561013d57600080fd5b8035906020019184602083028401116401000000008311171561015f57600080fd5b509092509050610291565b005b61016a610375565b61017c61048c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016a600480360360408110156101bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104a8565b61017c600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610717565b61016a6004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076c565b61017c6107e8565b61017c61080c565b61016a6004803603602081101561027457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610830565b3332146102ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b8260005b8181101561036d5761036586868381811061031a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061034357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166109d1565b600101610303565b505050505050565b61037d610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661039b61048c565b73ffffffffffffffffffffffffffffffffffffffff161461041d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104b0610d9e565b73ffffffffffffffffffffffffffffffffffffffff166104ce61048c565b73ffffffffffffffffffffffffffffffffffffffff161461055057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156105f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561063057508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61069b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a20496e76616c696420627269646765000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660008181526001602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040902054168061076757507f00000000000000000000000000000000000000000000000000000000000000005b919050565b3332146107da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b6107e482826109d1565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610838610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661085661048c565b73ffffffffffffffffffffffffffffffffffffffff16146108d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610944576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611db16026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a20496e76616c696420706169720000000000000000604482015290519081900360640190fd5b610bdd818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190610da2565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015610c4857600080fd5b505af1158015610c5c573d6000803e3d6000fd5b505050506040513d6040811015610c7257600080fd5b508051602091820151604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905192955090935073ffffffffffffffffffffffffffffffffffffffff861692630dfe168192600480840193829003018186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d6020811015610d0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff868116911614610d2f57905b73ffffffffffffffffffffffffffffffffffffffff808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610d7a8b8b8484610e34565b60408051938452602084019290925282820152519081900360600190a45050505050565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e2f9084906113b6565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fec576000610e76848461148e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f3557610f2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610da2565b809150610fe6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610fba57610fb37f00000000000000000000000000000000000000000000000000000000000000008261150b565b9150610fe6565b6000610fc587610717565b9050610fd387828430611560565b9150610fe28182846000610e34565b9250505b506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bc576110a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610da2565b6110b5836110af868561150b565b9061148e565b90506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117f5761117173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610da2565b6110b5826110af878661150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561122c576110b57f0000000000000000000000000000000000000000000000000000000000000000611227856110af887f00000000000000000000000000000000000000000000000000000000000000008830611560565b61150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112d4576110b57f0000000000000000000000000000000000000000000000000000000000000000611227846110af897f00000000000000000000000000000000000000000000000000000000000000008930611560565b60006112df86610717565b905060006112ec86610717565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113405761133982876113338a868a30611560565b87610e34565b92506113ab565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138b576113398782876113868a868a30611560565b610e34565b6113a8828261139c8a868a30611560565b6113868a868a30611560565b92505b50505b949350505050565b6060611418826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611aba9092919063ffffffff16565b805190915015610e2f5780806020019051602081101561143757600080fd5b5051610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e1e602a913960400191505060405180910390fd5b60008282018381101561150257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000611559837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611560565b9392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d602081101561163257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166116b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a2043616e6e6f7420636f6e76657274000000000000604482015290519081900360640190fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d606081101561172b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000611759876103e5611ac9565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8a811691161415611952576117fd816110af856103e8611ac9565b6118138361180d8a6103e5611ac9565b90611ac9565b8161181a57fe5b04945061183e73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018181526044830189905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156118e65781810151838201526020016118ce565b50505050905090810190601f1680156119135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b50505050611aae565b611962816110af846103e8611ac9565b6119728461180d8a6103e5611ac9565b8161197957fe5b04945061199d73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018881526044830182905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611a46578181015183820152602001611a2e565b50505050905090810190601f168015611a735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b505050505b50505050949350505050565b60606113ae8484600085611b3c565b600082611ad857506000611505565b82820282848281611ae557fe5b0414611502576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611dfd6021913960400191505060405180910390fd5b606082471015611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611dd76026913960400191505060405180910390fd5b611ba085611cec565b611c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611c7557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c38565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b50915091506113a8828286611cf2565b3b151590565b60608315611d01575081611559565b825115611d115782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d75578181015183820152602001611d5d565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220479d6823a9bb30ecdb96d1d2ca12107a3421eb2f5984f3a9e4b9ec9af04bdd1564736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA761A939 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF03C7C6E EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA761A939 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xBD1B820C EQ PUSH2 0x213 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x303E6AA4 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D22AE8C EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x291 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16A PUSH2 0x375 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x717 JUMP JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x76C JUMP JUMPDEST PUSH2 0x17C PUSH2 0x7E8 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x80C JUMP JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x830 JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0x2FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A206D7573742075736520454F410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH2 0x365 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x31A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x343 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x303 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x37D PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39B PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x41D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4B0 PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CE PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x550 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x630 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x69B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A20496E76616C696420627269646765000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x2E103AA707ACC565F9A1547341914802B2BFE977FD79C595209F248AE4B00613 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0x767 JUMPI POP PUSH32 0x0 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0x7DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A206D7573742075736520454F410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7E4 DUP3 DUP3 PUSH2 0x9D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x838 PUSH2 0xD9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x856 PUSH2 0x48C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x944 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DB1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB28 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A20496E76616C696420706169720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBDD DUP2 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 SWAP1 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDFE168100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP3 PUSH4 0xDFE1681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xD2F JUMPI SWAP1 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP1 DUP7 AND CALLER PUSH32 0xD06B1D7ED79B664D17472C6F6997B929F1ABE463CCCCB4E5B6A0038F2F730C15 DUP6 DUP6 PUSH2 0xD7A DUP12 DUP12 DUP5 DUP5 PUSH2 0xE34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xE2F SWAP1 DUP5 SWAP1 PUSH2 0x13B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 PUSH2 0xE76 DUP5 DUP5 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xF35 JUMPI PUSH2 0xF2D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xDA2 JUMP JUMPDEST DUP1 SWAP2 POP PUSH2 0xFE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xFBA JUMPI PUSH2 0xFB3 PUSH32 0x0 DUP3 PUSH2 0x150B JUMP JUMPDEST SWAP2 POP PUSH2 0xFE6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC5 DUP8 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP PUSH2 0xFD3 DUP8 DUP3 DUP5 ADDRESS PUSH2 0x1560 JUMP JUMPDEST SWAP2 POP PUSH2 0xFE2 DUP2 DUP3 DUP5 PUSH1 0x0 PUSH2 0xE34 JUMP JUMPDEST SWAP3 POP POP JUMPDEST POP PUSH2 0x13AE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10BC JUMPI PUSH2 0x10A1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP6 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x10B5 DUP4 PUSH2 0x10AF DUP7 DUP6 PUSH2 0x150B JUMP JUMPDEST SWAP1 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH2 0x13AE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x117F JUMPI PUSH2 0x1171 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x10B5 DUP3 PUSH2 0x10AF DUP8 DUP7 PUSH2 0x150B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x122C JUMPI PUSH2 0x10B5 PUSH32 0x0 PUSH2 0x1227 DUP6 PUSH2 0x10AF DUP9 PUSH32 0x0 DUP9 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0x150B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x12D4 JUMPI PUSH2 0x10B5 PUSH32 0x0 PUSH2 0x1227 DUP5 PUSH2 0x10AF DUP10 PUSH32 0x0 DUP10 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12DF DUP7 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12EC DUP7 PUSH2 0x717 JUMP JUMPDEST SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1340 JUMPI PUSH2 0x1339 DUP3 DUP8 PUSH2 0x1333 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST DUP8 PUSH2 0xE34 JUMP JUMPDEST SWAP3 POP PUSH2 0x13AB JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x138B JUMPI PUSH2 0x1339 DUP8 DUP3 DUP8 PUSH2 0x1386 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x13A8 DUP3 DUP3 PUSH2 0x139C DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST PUSH2 0x1386 DUP11 DUP7 DUP11 ADDRESS PUSH2 0x1560 JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1418 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1ABA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xE2F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xE2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1502 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1559 DUP4 PUSH32 0x0 DUP5 PUSH32 0x0 PUSH2 0x1560 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP8 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x161C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x16B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506974427265656465723A2043616E6E6F7420636F6E76657274000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1715 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 PUSH2 0x1759 DUP8 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x1952 JUMPI PUSH2 0x17FD DUP2 PUSH2 0x10AF DUP6 PUSH2 0x3E8 PUSH2 0x1AC9 JUMP JUMPDEST PUSH2 0x1813 DUP4 PUSH2 0x180D DUP11 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST SWAP1 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x181A JUMPI INVALID JUMPDEST DIV SWAP5 POP PUSH2 0x183E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP6 DUP10 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP2 DUP11 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP13 SWAP5 DUP15 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 DUP6 ADD SWAP2 SWAP1 DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18CE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1913 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1949 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1AAE JUMP JUMPDEST PUSH2 0x1962 DUP2 PUSH2 0x10AF DUP5 PUSH2 0x3E8 PUSH2 0x1AC9 JUMP JUMPDEST PUSH2 0x1972 DUP5 PUSH2 0x180D DUP11 PUSH2 0x3E5 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x1979 JUMPI INVALID JUMPDEST DIV SWAP5 POP PUSH2 0x199D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP6 DUP10 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP9 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP3 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP2 DUP11 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP13 SWAP6 SWAP5 DUP15 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 DUP6 ADD SWAP2 SWAP1 DUP1 DUP4 DUP4 DUP11 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AE DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1B3C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1AD8 JUMPI POP PUSH1 0x0 PUSH2 0x1505 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1AE5 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1502 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFD PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1B97 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DD7 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BA0 DUP6 PUSH2 0x1CEC JUMP JUMPDEST PUSH2 0x1C0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1C75 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1CD7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1CDC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x13A8 DUP3 DUP3 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1D01 JUMPI POP DUP2 PUSH2 0x1559 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1D11 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D75 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D5D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1DA2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573733A20696E7375666669 PUSH4 0x69656E74 KECCAK256 PUSH3 0x616C61 PUSH15 0x636520666F722063616C6C53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A2646970667358221220479D6823 0xA9 0xBB ADDRESS 0xEC 0xDB SWAP7 0xD1 0xD2 0xCA SLT LT PUSH27 0x3421EB2F5984F3A9E4B9EC9AF04BDD1564736F6C634300060C0033 ",
          "sourceMap": "657:8437:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3474:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3474:351:17;;-1:-1:-1;3474:351:17;-1:-1:-1;3474:351:17;:::i;:::-;;1717:145:0;;;:::i;1085:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2093:326:17;;;;;;;;;;;;;;;;-1:-1:-1;2093:326:17;;;;;;;;;;;:::i;1862:185::-;;;;;;;;;;;;;;;;-1:-1:-1;1862:185:17;;;;:::i;3259:109::-;;;;;;;;;;;;;;;;-1:-1:-1;3259:109:17;;;;;;;;;;;:::i;778:42::-;;;:::i;894:28::-;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;3474:351:17:-;2706:10;2720:9;2706:23;2698:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3707:6;3693:11:::1;3730:89;3754:3;3750:1;:7;3730:89;;;3778:30;3787:6;;3794:1;3787:9;;;;;;;;;;;;;;;3798:6;;3805:1;3798:9;;;;;;;;;;;;;;;3778:8;:30::i;:::-;3759:3;;3730:89;;;;2768:1;3474:351:::0;;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;2093:326:17:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:8:17::1;2211:17;;:5;:17;;;;:34;;;;;2241:4;2232:13;;:5;:13;;;;2211:34;:53;;;;;2258:6;2249:15;;:5;:15;;;;2211:53;2190:126;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2346:15;::::0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;;:24;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;2385:27;::::1;::::0;2346:15;2385:27:::1;2093:326:::0;;:::o;1862:185::-;1952:15;;;;1917:14;1952:15;;;:8;:15;;;;;;;1981:20;1977:64;;-1:-1:-1;2026:4:17;1977:64;1862:185;;;:::o;3259:109::-;2706:10;2720:9;2706:23;2698:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:24:::1;3346:6;3354;3337:8;:24::i;:::-;3259:109:::0;;:::o;778:42::-;;;:::o;894:28::-;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;3870:854:17:-;3986:19;4023:7;:15;;;4039:6;4047;4023:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:31:17;;-1:-1:-1;4073:27:17;;;4065:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4206:114;4262:4;4281;:14;;;4304:4;4281:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4281:29:17;4206:34;;;;:114;:34;:114::i;:::-;4354:15;4371;4390:4;:9;;;4408:4;4390:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4390:24:17;;;;;;;;4438:13;;;;;;;4390:24;;-1:-1:-1;4390:24:17;;-1:-1:-1;4438:11:17;;;;;;:13;;;;;;;;;;:11;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4438:13:17;4428:23;;;;;;;4424:93;;4489:7;4424:93;4531:186;;;;;;;4555:10;4531:186;4619:7;4640;4661:46;4579:6;4599;4619:7;4640;4661:12;:46::i;:::-;4531:186;;;;;;;;;;;;;;;;;;;;;;;;;;3870:854;;;;;:::o;598:104:6:-;685:10;598:104;:::o;704:175:4:-;813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:23;813:58;;;786:86;;806:5;;786:19;:86::i;:::-;704:175;;;:::o;4841:2706:17:-;4985:19;5054:6;5044:16;;:6;:16;;;5040:2501;;;5076:14;5093:20;:7;5105;5093:11;:20::i;:::-;5076:37;;5141:8;5131:18;;:6;:18;;;5127:450;;;5169:42;:29;5176:8;5169:29;5199:3;5204:6;5169:29;:42::i;:::-;5243:6;5229:20;;5127:450;;;5284:4;5274:14;;:6;:14;;;5270:307;;;5322:25;5334:4;5340:6;5322:11;:25::i;:::-;5308:39;;5270:307;;;5386:14;5403:17;5413:6;5403:9;:17::i;:::-;5386:34;;5447:44;5453:6;5461;5469;5485:4;5447:5;:44::i;:::-;5438:53;;5523:39;5536:6;5544;5552;5560:1;5523:12;:39::i;:::-;5509:53;;5270:307;;5040:2501;;;;5607:8;5597:18;;:6;:18;;;5593:1948;;;5665:43;:29;5672:8;5665:29;5695:3;5700:7;5665:29;:43::i;:::-;5736:41;5769:7;5736:28;5748:6;5756:7;5736:11;:28::i;:::-;:32;;:41::i;:::-;5722:55;;5593:1948;;;5808:8;5798:18;;:6;:18;;;5794:1747;;;5867:43;:29;5874:8;5867:29;5897:3;5902:7;5867:29;:43::i;:::-;5938:41;5971:7;5938:28;5950:6;5958:7;5938:11;:28::i;5794:1747::-;6010:4;6000:14;;:6;:14;;;5996:1545;;;6074:121;6103:4;6125:56;6173:7;6125:43;6131:6;6139:4;6145:7;6162:4;6125:5;:43::i;:56::-;6074:11;:121::i;5996:1545::-;6226:4;6216:14;;:6;:14;;;6212:1329;;;6290:121;6319:4;6341:56;6389:7;6341:43;6347:6;6355:4;6361:7;6378:4;6341:5;:43::i;6212:1329::-;6472:15;6490:17;6500:6;6490:9;:17::i;:::-;6472:35;;6521:15;6539:17;6549:6;6539:9;:17::i;:::-;6521:35;;6585:6;6574:17;;:7;:17;;;6570:961;;;6687:184;6721:7;6750:6;6778:46;6784:6;6792:7;6801;6818:4;6778:5;:46::i;:::-;6846:7;6687:12;:184::i;:::-;6673:198;;6570:961;;;6907:6;6896:17;;:7;:17;;;6892:639;;;7009:184;7043:6;7071:7;7100;7129:46;7135:6;7143:7;7152;7169:4;7129:5;:46::i;:::-;7009:12;:184::i;6892:639::-;7246:270;7280:7;7309;7384:46;7390:6;7398:7;7407;7424:4;7384:5;:46::i;:::-;7452;7458:6;7466:7;7475;7492:4;7452:5;:46::i;7246:270::-;7232:284;;6892:639;6212:1329;;;4841:2706;;;;;;:::o;2967:751:4:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:4;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:4;3616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2690:175:1;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;-1:-1:-1;2690:175:1;;;;;:::o;8892:200:17:-;8980:17;9048:37;9054:5;9061:8;9071;9081:3;9048:5;:37::i;:::-;9036:49;8892:200;-1:-1:-1;;;8892:200:17:o;7636:1210::-;7773:17;7843:19;7892:7;:15;;;7908:9;7919:7;7892:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7892:35:17;;-1:-1:-1;7946:27:17;;;7938:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8063:16;8081;8103:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:18:17;;;;;;;8062:59;;;;;-1:-1:-1;8062:59:17;;-1:-1:-1;8131:23:17;8157:17;:8;8170:3;8157:12;:17::i;:::-;8131:43;;8201:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8201:13:17;8188:26;;;;;;;8184:656;;;8308:39;8331:15;8308:18;:8;8321:4;8308:12;:18::i;:39::-;8258:31;8280:8;8258:17;:8;8271:3;8258:12;:17::i;:::-;:21;;:31::i;:::-;:89;;;;;;;-1:-1:-1;8361:55:17;:30;;;8400:4;8407:8;8361:30;:55::i;:::-;8458:12;;;8440:1;8458:12;;;;;;;;;;8430:41;;;;;;;;;;;;;;;:9;:41;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;8443;;8454:2;;8458:12;;8430:41;;;;;;;;8458:12;8430:41;;8458:12;8440:1;8430:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8184:656;;;8623:39;8646:15;8623:18;:8;8636:4;8623:12;:18::i;:39::-;8573:31;8595:8;8573:17;:8;8586:3;8573:12;:17::i;:31::-;:89;;;;;;;-1:-1:-1;8676:55:17;:30;;;8715:4;8722:8;8676:30;:55::i;:::-;8773:12;;;8766:1;8773:12;;;;;;;;;;8745:41;;;;;;;;;;;;;;;:9;:41;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;8755;;8766:1;8769:2;;8773:12;;8745:41;;;;;;;;8773:12;8745:41;;8773:12;8766:1;8745:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8184:656;7636:1210;;;;;;;;;;:::o;3581:193:5:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4608:523:5;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:5;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_govToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"LogBridgeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"server\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountGovToken\",\"type\":\"uint256\"}],\"name\":\"LogConvert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"bridgeFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"convert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"token0\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"token1\",\"type\":\"address[]\"}],\"name\":\"convertMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IUniswapV2Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PitBreeder.sol\":\"PitBreeder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/PitBreeder.sol\":{\"keccak256\":\"0x8b6f85286cb9e8074c2820a08e341f47cd5ce27ee04d2391f7b5da3348f569d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc136ad30a02fd1ebde81805b0884be25c4a5216a56bece6527e0ef061010728\",\"dweb:/ipfs/QmcmVkSMvKgwjGr56Gr1mw6E8mi5YH51oFmyq42k8hz1PG\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol\":{\"keccak256\":\"0xd179ddb73cdb485120799c3e5f446bd4f9885205528f1e51eda8b3074a819d88\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea5afb5efa71c14f1e3484e4d4a10cab3c94d116d357e517eaa658bdd4591a3b\",\"dweb:/ipfs/QmRH5VJr6NAAKk4DXT85Pf6B6frLViUnHf8bFbfGeKt8Q8\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x3368b1700fc4a77b780967cdd03c731da787a99f054f69f4b404d3cd3691712d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://47521585cb5e7f2a8a1586b7d4f09e5ffc80929af8f9ed18012a1b4a82920b9f\",\"dweb:/ipfs/QmdHmVCdnyDq9GFDuRKXe69ATcY4ABXehHzoKRnzxtWNFv\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_pit",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_govToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_weth",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "name": "LogBridgeSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "server",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountGovToken",
              "type": "uint256"
            }
          ],
          "name": "LogConvert",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "bridgeFor",
          "outputs": [
            {
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "convert",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "token0",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "token1",
              "type": "address[]"
            }
          ],
          "name": "convertMultiple",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "contract IUniswapV2Factory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pit",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "bridge",
              "type": "address"
            }
          ],
          "name": "setBridge",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "61010060405234801561001157600080fd5b50604051611ffe380380611ffe8339818101604052608081101561003457600080fd5b508051602082015160408301516060909301519192909160006100556100ce565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e0526100d2565b3390565b60805160601c60a05160601c60c05160601c60e05160601c611e7d610181600039806105a952806107475280610f375280610f8e528061118152806111d85280611201528061122e528061128552806112ae5250806105525280610e7a5280610ee65280610fee528061105a52806110be528061112a528061151352508061080e5280610f08528061107c528061114c52806115355250806107ea52806109d552806115655250611e7d6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a761a93911610076578063c45a01551161005b578063c45a01551461024e578063f03c7c6e14610256578063f2fde38b1461025e576100a3565b8063a761a939146101e0578063bd1b820c14610213576100a3565b8063303e6aa4146100a8578063715018a61461016c5780638da5cb5b146101745780639d22ae8c146101a5575b600080fd5b61016a600480360360408110156100be57600080fd5b8101906020810181356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184602083028401116401000000008311171561010d57600080fd5b91939092909160208101903564010000000081111561012b57600080fd5b82018360208201111561013d57600080fd5b8035906020019184602083028401116401000000008311171561015f57600080fd5b509092509050610291565b005b61016a610375565b61017c61048c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016a600480360360408110156101bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104a8565b61017c600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610717565b61016a6004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076c565b61017c6107e8565b61017c61080c565b61016a6004803603602081101561027457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610830565b3332146102ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b8260005b8181101561036d5761036586868381811061031a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061034357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166109d1565b600101610303565b505050505050565b61037d610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661039b61048c565b73ffffffffffffffffffffffffffffffffffffffff161461041d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104b0610d9e565b73ffffffffffffffffffffffffffffffffffffffff166104ce61048c565b73ffffffffffffffffffffffffffffffffffffffff161461055057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156105f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561063057508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61069b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a20496e76616c696420627269646765000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660008181526001602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040902054168061076757507f00000000000000000000000000000000000000000000000000000000000000005b919050565b3332146107da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b6107e482826109d1565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610838610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661085661048c565b73ffffffffffffffffffffffffffffffffffffffff16146108d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610944576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611db16026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a20496e76616c696420706169720000000000000000604482015290519081900360640190fd5b610bdd818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190610da2565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015610c4857600080fd5b505af1158015610c5c573d6000803e3d6000fd5b505050506040513d6040811015610c7257600080fd5b508051602091820151604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905192955090935073ffffffffffffffffffffffffffffffffffffffff861692630dfe168192600480840193829003018186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d6020811015610d0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff868116911614610d2f57905b73ffffffffffffffffffffffffffffffffffffffff808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610d7a8b8b8484610e34565b60408051938452602084019290925282820152519081900360600190a45050505050565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e2f9084906113b6565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fec576000610e76848461148e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f3557610f2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610da2565b809150610fe6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610fba57610fb37f00000000000000000000000000000000000000000000000000000000000000008261150b565b9150610fe6565b6000610fc587610717565b9050610fd387828430611560565b9150610fe28182846000610e34565b9250505b506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bc576110a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610da2565b6110b5836110af868561150b565b9061148e565b90506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117f5761117173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610da2565b6110b5826110af878661150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561122c576110b57f0000000000000000000000000000000000000000000000000000000000000000611227856110af887f00000000000000000000000000000000000000000000000000000000000000008830611560565b61150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112d4576110b57f0000000000000000000000000000000000000000000000000000000000000000611227846110af897f00000000000000000000000000000000000000000000000000000000000000008930611560565b60006112df86610717565b905060006112ec86610717565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113405761133982876113338a868a30611560565b87610e34565b92506113ab565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138b576113398782876113868a868a30611560565b610e34565b6113a8828261139c8a868a30611560565b6113868a868a30611560565b92505b50505b949350505050565b6060611418826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611aba9092919063ffffffff16565b805190915015610e2f5780806020019051602081101561143757600080fd5b5051610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e1e602a913960400191505060405180910390fd5b60008282018381101561150257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000611559837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611560565b9392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d602081101561163257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166116b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a2043616e6e6f7420636f6e76657274000000000000604482015290519081900360640190fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d606081101561172b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000611759876103e5611ac9565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8a811691161415611952576117fd816110af856103e8611ac9565b6118138361180d8a6103e5611ac9565b90611ac9565b8161181a57fe5b04945061183e73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018181526044830189905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156118e65781810151838201526020016118ce565b50505050905090810190601f1680156119135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b50505050611aae565b611962816110af846103e8611ac9565b6119728461180d8a6103e5611ac9565b8161197957fe5b04945061199d73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018881526044830182905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611a46578181015183820152602001611a2e565b50505050905090810190601f168015611a735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b505050505b50505050949350505050565b60606113ae8484600085611b3c565b600082611ad857506000611505565b82820282848281611ae557fe5b0414611502576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611dfd6021913960400191505060405180910390fd5b606082471015611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611dd76026913960400191505060405180910390fd5b611ba085611cec565b611c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611c7557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c38565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b50915091506113a8828286611cf2565b3b151590565b60608315611d01575081611559565b825115611d115782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d75578181015183820152602001611d5d565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220479d6823a9bb30ecdb96d1d2ca12107a3421eb2f5984f3a9e4b9ec9af04bdd1564736f6c634300060c0033",
      "bin": "61010060405234801561001157600080fd5b50604051611ffe380380611ffe8339818101604052608081101561003457600080fd5b508051602082015160408301516060909301519192909160006100556100ce565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e0526100d2565b3390565b60805160601c60a05160601c60c05160601c60e05160601c611e7d610181600039806105a952806107475280610f375280610f8e528061118152806111d85280611201528061122e528061128552806112ae5250806105525280610e7a5280610ee65280610fee528061105a52806110be528061112a528061151352508061080e5280610f08528061107c528061114c52806115355250806107ea52806109d552806115655250611e7d6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a761a93911610076578063c45a01551161005b578063c45a01551461024e578063f03c7c6e14610256578063f2fde38b1461025e576100a3565b8063a761a939146101e0578063bd1b820c14610213576100a3565b8063303e6aa4146100a8578063715018a61461016c5780638da5cb5b146101745780639d22ae8c146101a5575b600080fd5b61016a600480360360408110156100be57600080fd5b8101906020810181356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184602083028401116401000000008311171561010d57600080fd5b91939092909160208101903564010000000081111561012b57600080fd5b82018360208201111561013d57600080fd5b8035906020019184602083028401116401000000008311171561015f57600080fd5b509092509050610291565b005b61016a610375565b61017c61048c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016a600480360360408110156101bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104a8565b61017c600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610717565b61016a6004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076c565b61017c6107e8565b61017c61080c565b61016a6004803603602081101561027457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610830565b3332146102ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b8260005b8181101561036d5761036586868381811061031a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061034357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166109d1565b600101610303565b505050505050565b61037d610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661039b61048c565b73ffffffffffffffffffffffffffffffffffffffff161461041d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104b0610d9e565b73ffffffffffffffffffffffffffffffffffffffff166104ce61048c565b73ffffffffffffffffffffffffffffffffffffffff161461055057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156105f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561063057508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61069b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a20496e76616c696420627269646765000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660008181526001602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040902054168061076757507f00000000000000000000000000000000000000000000000000000000000000005b919050565b3332146107da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b6107e482826109d1565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610838610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661085661048c565b73ffffffffffffffffffffffffffffffffffffffff16146108d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610944576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611db16026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a20496e76616c696420706169720000000000000000604482015290519081900360640190fd5b610bdd818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190610da2565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015610c4857600080fd5b505af1158015610c5c573d6000803e3d6000fd5b505050506040513d6040811015610c7257600080fd5b508051602091820151604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905192955090935073ffffffffffffffffffffffffffffffffffffffff861692630dfe168192600480840193829003018186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d6020811015610d0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff868116911614610d2f57905b73ffffffffffffffffffffffffffffffffffffffff808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610d7a8b8b8484610e34565b60408051938452602084019290925282820152519081900360600190a45050505050565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e2f9084906113b6565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fec576000610e76848461148e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f3557610f2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610da2565b809150610fe6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610fba57610fb37f00000000000000000000000000000000000000000000000000000000000000008261150b565b9150610fe6565b6000610fc587610717565b9050610fd387828430611560565b9150610fe28182846000610e34565b9250505b506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bc576110a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610da2565b6110b5836110af868561150b565b9061148e565b90506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117f5761117173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610da2565b6110b5826110af878661150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561122c576110b57f0000000000000000000000000000000000000000000000000000000000000000611227856110af887f00000000000000000000000000000000000000000000000000000000000000008830611560565b61150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112d4576110b57f0000000000000000000000000000000000000000000000000000000000000000611227846110af897f00000000000000000000000000000000000000000000000000000000000000008930611560565b60006112df86610717565b905060006112ec86610717565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113405761133982876113338a868a30611560565b87610e34565b92506113ab565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138b576113398782876113868a868a30611560565b610e34565b6113a8828261139c8a868a30611560565b6113868a868a30611560565b92505b50505b949350505050565b6060611418826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611aba9092919063ffffffff16565b805190915015610e2f5780806020019051602081101561143757600080fd5b5051610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e1e602a913960400191505060405180910390fd5b60008282018381101561150257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000611559837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611560565b9392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d602081101561163257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166116b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a2043616e6e6f7420636f6e76657274000000000000604482015290519081900360640190fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d606081101561172b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000611759876103e5611ac9565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8a811691161415611952576117fd816110af856103e8611ac9565b6118138361180d8a6103e5611ac9565b90611ac9565b8161181a57fe5b04945061183e73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018181526044830189905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156118e65781810151838201526020016118ce565b50505050905090810190601f1680156119135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b50505050611aae565b611962816110af846103e8611ac9565b6119728461180d8a6103e5611ac9565b8161197957fe5b04945061199d73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018881526044830182905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611a46578181015183820152602001611a2e565b50505050905090810190601f168015611a735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b505050505b50505050949350505050565b60606113ae8484600085611b3c565b600082611ad857506000611505565b82820282848281611ae557fe5b0414611502576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611dfd6021913960400191505060405180910390fd5b606082471015611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611dd76026913960400191505060405180910390fd5b611ba085611cec565b611c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611c7557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c38565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b50915091506113a8828286611cf2565b3b151590565b60608315611d01575081611559565b825115611d115782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d75578181015183820152602001611d5d565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220479d6823a9bb30ecdb96d1d2ca12107a3421eb2f5984f3a9e4b9ec9af04bdd1564736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a761a93911610076578063c45a01551161005b578063c45a01551461024e578063f03c7c6e14610256578063f2fde38b1461025e576100a3565b8063a761a939146101e0578063bd1b820c14610213576100a3565b8063303e6aa4146100a8578063715018a61461016c5780638da5cb5b146101745780639d22ae8c146101a5575b600080fd5b61016a600480360360408110156100be57600080fd5b8101906020810181356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184602083028401116401000000008311171561010d57600080fd5b91939092909160208101903564010000000081111561012b57600080fd5b82018360208201111561013d57600080fd5b8035906020019184602083028401116401000000008311171561015f57600080fd5b509092509050610291565b005b61016a610375565b61017c61048c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016a600480360360408110156101bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104a8565b61017c600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610717565b61016a6004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076c565b61017c6107e8565b61017c61080c565b61016a6004803603602081101561027457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610830565b3332146102ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b8260005b8181101561036d5761036586868381811061031a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061034357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166109d1565b600101610303565b505050505050565b61037d610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661039b61048c565b73ffffffffffffffffffffffffffffffffffffffff161461041d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104b0610d9e565b73ffffffffffffffffffffffffffffffffffffffff166104ce61048c565b73ffffffffffffffffffffffffffffffffffffffff161461055057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156105f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561063057508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61069b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a20496e76616c696420627269646765000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660008181526001602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040902054168061076757507f00000000000000000000000000000000000000000000000000000000000000005b919050565b3332146107da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a206d7573742075736520454f410000000000000000604482015290519081900360640190fd5b6107e482826109d1565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610838610d9e565b73ffffffffffffffffffffffffffffffffffffffff1661085661048c565b73ffffffffffffffffffffffffffffffffffffffff16146108d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610944576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611db16026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f506974427265656465723a20496e76616c696420706169720000000000000000604482015290519081900360640190fd5b610bdd818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190610da2565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015610c4857600080fd5b505af1158015610c5c573d6000803e3d6000fd5b505050506040513d6040811015610c7257600080fd5b508051602091820151604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905192955090935073ffffffffffffffffffffffffffffffffffffffff861692630dfe168192600480840193829003018186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d6020811015610d0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff868116911614610d2f57905b73ffffffffffffffffffffffffffffffffffffffff808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610d7a8b8b8484610e34565b60408051938452602084019290925282820152519081900360600190a45050505050565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e2f9084906113b6565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fec576000610e76848461148e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f3557610f2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610da2565b809150610fe6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610fba57610fb37f00000000000000000000000000000000000000000000000000000000000000008261150b565b9150610fe6565b6000610fc587610717565b9050610fd387828430611560565b9150610fe28182846000610e34565b9250505b506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bc576110a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610da2565b6110b5836110af868561150b565b9061148e565b90506113ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117f5761117173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610da2565b6110b5826110af878661150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561122c576110b57f0000000000000000000000000000000000000000000000000000000000000000611227856110af887f00000000000000000000000000000000000000000000000000000000000000008830611560565b61150b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112d4576110b57f0000000000000000000000000000000000000000000000000000000000000000611227846110af897f00000000000000000000000000000000000000000000000000000000000000008930611560565b60006112df86610717565b905060006112ec86610717565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113405761133982876113338a868a30611560565b87610e34565b92506113ab565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138b576113398782876113868a868a30611560565b610e34565b6113a8828261139c8a868a30611560565b6113868a868a30611560565b92505b50505b949350505050565b6060611418826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611aba9092919063ffffffff16565b805190915015610e2f5780806020019051602081101561143757600080fd5b5051610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e1e602a913960400191505060405180910390fd5b60008282018381101561150257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000611559837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611560565b9392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d602081101561163257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166116b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506974427265656465723a2043616e6e6f7420636f6e76657274000000000000604482015290519081900360640190fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d606081101561172b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000611759876103e5611ac9565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8a811691161415611952576117fd816110af856103e8611ac9565b6118138361180d8a6103e5611ac9565b90611ac9565b8161181a57fe5b04945061183e73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018181526044830189905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156118e65781810151838201526020016118ce565b50505050905090810190601f1680156119135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b50505050611aae565b611962816110af846103e8611ac9565b6119728461180d8a6103e5611ac9565b8161197957fe5b04945061199d73ffffffffffffffffffffffffffffffffffffffff8a168589610da2565b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018881526044830182905273ffffffffffffffffffffffffffffffffffffffff8a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611a46578181015183820152602001611a2e565b50505050905090810190601f168015611a735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b505050505b50505050949350505050565b60606113ae8484600085611b3c565b600082611ad857506000611505565b82820282848281611ae557fe5b0414611502576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611dfd6021913960400191505060405180910390fd5b606082471015611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611dd76026913960400191505060405180910390fd5b611ba085611cec565b611c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611c7557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c38565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b50915091506113a8828286611cf2565b3b151590565b60608315611d01575081611559565b825115611d115782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d75578181015183820152602001611d5d565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220479d6823a9bb30ecdb96d1d2ca12107a3421eb2f5984f3a9e4b9ec9af04bdd1564736f6c634300060c0033",
      "srcmap": "657:8437:17:-:0;;;1567:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1567:249:17;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;;;;;;;1700:37:17;;;;;;;;1747:10;;;;;;;1767:20;;;;;;;1797:12;;;;;;657:8437;;598:104:6;685:10;598:104;:::o;657:8437:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "657:8437:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3474:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3474:351:17;;-1:-1:-1;3474:351:17;-1:-1:-1;3474:351:17;:::i;:::-;;1717:145:0;;;:::i;1085:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2093:326:17;;;;;;;;;;;;;;;;-1:-1:-1;2093:326:17;;;;;;;;;;;:::i;1862:185::-;;;;;;;;;;;;;;;;-1:-1:-1;1862:185:17;;;;:::i;3259:109::-;;;;;;;;;;;;;;;;-1:-1:-1;3259:109:17;;;;;;;;;;;:::i;778:42::-;;;:::i;894:28::-;;;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;;;;:::i;3474:351:17:-;2706:10;2720:9;2706:23;2698:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3707:6;3693:11:::1;3730:89;3754:3;3750:1;:7;3730:89;;;3778:30;3787:6;;3794:1;3787:9;;;;;;;;;;;;;;;3798:6;;3805:1;3798:9;;;;;;;;;;;;;;;3778:8;:30::i;:::-;3759:3;;3730:89;;;;2768:1;3474:351:::0;;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;::::1;1807:6:::0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;;::::1;::::0;;1717:145::o;1085:85::-;1131:7;1157:6;;;1085:85;:::o;2093:326:17:-;1308:12:0;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:8:17::1;2211:17;;:5;:17;;;;:34;;;;;2241:4;2232:13;;:5;:13;;;;2211:34;:53;;;;;2258:6;2249:15;;:5;:15;;;;2211:53;2190:126;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2346:15;::::0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;;:24;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;2385:27;::::1;::::0;2346:15;2385:27:::1;2093:326:::0;;:::o;1862:185::-;1952:15;;;;1917:14;1952:15;;;:8;:15;;;;;;;1981:20;1977:64;;-1:-1:-1;2026:4:17;1977:64;1862:185;;;:::o;3259:109::-;2706:10;2720:9;2706:23;2698:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:24:::1;3346:6;3354;3337:8;:24::i;:::-;3259:109:::0;;:::o;778:42::-;;;:::o;894:28::-;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2099:22:::1;::::0;::::1;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;::::1;::::0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;3870:854:17:-;3986:19;4023:7;:15;;;4039:6;4047;4023:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:31:17;;-1:-1:-1;4073:27:17;;;4065:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4206:114;4262:4;4281;:14;;;4304:4;4281:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4281:29:17;4206:34;;;;:114;:34;:114::i;:::-;4354:15;4371;4390:4;:9;;;4408:4;4390:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4390:24:17;;;;;;;;4438:13;;;;;;;4390:24;;-1:-1:-1;4390:24:17;;-1:-1:-1;4438:11:17;;;;;;:13;;;;;;;;;;:11;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4438:13:17;4428:23;;;;;;;4424:93;;4489:7;4424:93;4531:186;;;;;;;4555:10;4531:186;4619:7;4640;4661:46;4579:6;4599;4619:7;4640;4661:12;:46::i;:::-;4531:186;;;;;;;;;;;;;;;;;;;;;;;;;;3870:854;;;;;:::o;598:104:6:-;685:10;598:104;:::o;704:175:4:-;813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:23;813:58;;;786:86;;806:5;;786:19;:86::i;:::-;704:175;;;:::o;4841:2706:17:-;4985:19;5054:6;5044:16;;:6;:16;;;5040:2501;;;5076:14;5093:20;:7;5105;5093:11;:20::i;:::-;5076:37;;5141:8;5131:18;;:6;:18;;;5127:450;;;5169:42;:29;5176:8;5169:29;5199:3;5204:6;5169:29;:42::i;:::-;5243:6;5229:20;;5127:450;;;5284:4;5274:14;;:6;:14;;;5270:307;;;5322:25;5334:4;5340:6;5322:11;:25::i;:::-;5308:39;;5270:307;;;5386:14;5403:17;5413:6;5403:9;:17::i;:::-;5386:34;;5447:44;5453:6;5461;5469;5485:4;5447:5;:44::i;:::-;5438:53;;5523:39;5536:6;5544;5552;5560:1;5523:12;:39::i;:::-;5509:53;;5270:307;;5040:2501;;;;5607:8;5597:18;;:6;:18;;;5593:1948;;;5665:43;:29;5672:8;5665:29;5695:3;5700:7;5665:29;:43::i;:::-;5736:41;5769:7;5736:28;5748:6;5756:7;5736:11;:28::i;:::-;:32;;:41::i;:::-;5722:55;;5593:1948;;;5808:8;5798:18;;:6;:18;;;5794:1747;;;5867:43;:29;5874:8;5867:29;5897:3;5902:7;5867:29;:43::i;:::-;5938:41;5971:7;5938:28;5950:6;5958:7;5938:11;:28::i;5794:1747::-;6010:4;6000:14;;:6;:14;;;5996:1545;;;6074:121;6103:4;6125:56;6173:7;6125:43;6131:6;6139:4;6145:7;6162:4;6125:5;:43::i;:56::-;6074:11;:121::i;5996:1545::-;6226:4;6216:14;;:6;:14;;;6212:1329;;;6290:121;6319:4;6341:56;6389:7;6341:43;6347:6;6355:4;6361:7;6378:4;6341:5;:43::i;6212:1329::-;6472:15;6490:17;6500:6;6490:9;:17::i;:::-;6472:35;;6521:15;6539:17;6549:6;6539:9;:17::i;:::-;6521:35;;6585:6;6574:17;;:7;:17;;;6570:961;;;6687:184;6721:7;6750:6;6778:46;6784:6;6792:7;6801;6818:4;6778:5;:46::i;:::-;6846:7;6687:12;:184::i;:::-;6673:198;;6570:961;;;6907:6;6896:17;;:7;:17;;;6892:639;;;7009:184;7043:6;7071:7;7100;7129:46;7135:6;7143:7;7152;7169:4;7129:5;:46::i;:::-;7009:12;:184::i;6892:639::-;7246:270;7280:7;7309;7384:46;7390:6;7398:7;7407;7424:4;7384:5;:46::i;:::-;7452;7458:6;7466:7;7475;7492:4;7452:5;:46::i;7246:270::-;7232:284;;6892:639;6212:1329;;;4841:2706;;;;;;:::o;2967:751:4:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:4;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:4;3616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2690:175:1;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;-1:-1:-1;2690:175:1;;;;;:::o;8892:200:17:-;8980:17;9048:37;9054:5;9061:8;9071;9081:3;9048:5;:37::i;:::-;9036:49;8892:200;-1:-1:-1;;;8892:200:17:o;7636:1210::-;7773:17;7843:19;7892:7;:15;;;7908:9;7919:7;7892:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7892:35:17;;-1:-1:-1;7946:27:17;;;7938:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8063:16;8081;8103:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:18:17;;;;;;;8062:59;;;;;-1:-1:-1;8062:59:17;;-1:-1:-1;8131:23:17;8157:17;:8;8170:3;8157:12;:17::i;:::-;8131:43;;8201:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8201:13:17;8188:26;;;;;;;8184:656;;;8308:39;8331:15;8308:18;:8;8321:4;8308:12;:18::i;:39::-;8258:31;8280:8;8258:17;:8;8271:3;8258:12;:17::i;:::-;:21;;:31::i;:::-;:89;;;;;;;-1:-1:-1;8361:55:17;:30;;;8400:4;8407:8;8361:30;:55::i;:::-;8458:12;;;8440:1;8458:12;;;;;;;;;;8430:41;;;;;;;;;;;;;;;:9;:41;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;8443;;8454:2;;8458:12;;8430:41;;;;;;;;8458:12;8430:41;;8458:12;8440:1;8430:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8184:656;;;8623:39;8646:15;8623:18;:8;8636:4;8623:12;:18::i;:39::-;8573:31;8595:8;8573:17;:8;8586:3;8573:12;:17::i;:31::-;:89;;;;;;;-1:-1:-1;8676:55:17;:30;;;8715:4;8722:8;8676:30;:55::i;:::-;8773:12;;;8766:1;8773:12;;;;;;;;;;8745:41;;;;;;;;;;;;;;;:9;:41;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;8755;;8766:1;8769:2;;8773:12;;8745:41;;;;;;;;8773:12;8745:41;;8773:12;8766:1;8745:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8184:656;7636:1210;;;;;;;;;;:::o;3581:193:5:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4608:523:5;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:5;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/Timelock.sol:Timelock": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "admin_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "CancelTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "ExecuteTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            }
          ],
          "name": "NewAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newDelay",
              "type": "uint256"
            }
          ],
          "name": "NewDelay",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newPendingAdmin",
              "type": "address"
            }
          ],
          "name": "NewPendingAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "QueueTransaction",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "GRACE_PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MAXIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "admin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "admin_initialized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "cancelTransaction",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "delay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "executeTransaction",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "queueTransaction",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "queuedTransactions",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "name": "setDelay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingAdmin_",
              "type": "address"
            }
          ],
          "name": "setPendingAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051611cec380380611cec8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611cb56037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b815260040180806020018281038252603b815260200180611c7a603b913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002556003805460ff19169055611b7c806100fe6000396000f3fe6080604052600436106100e15760003560e01c80636fc1f57e1161007f578063c1a287e211610059578063c1a287e21461067e578063e177246e14610693578063f2b06537146106bd578063f851a440146106e7576100e8565b80636fc1f57e1461062b5780637d645fab14610654578063b1b43ae514610669576100e8565b80633a66f901116100bb5780633a66f901146103085780634dd18bf514610478578063591fcdfe146104b85780636a42b8f814610616576100e8565b80630825f38f146100ed5780630e18b681146102b357806326782247146102ca576100e8565b366100e857005b600080fd5b61023e600480360360a081101561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101c757600080fd5b8201836020820111156101d957600080fd5b803590602001918460018302840111640100000000831117156101fb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fc915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102c8610d3f565b005b3480156102d657600080fd5b506102df610e27565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561031457600080fd5b50610466600480360360a081101561032b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e43915050565b60408051918252519081900360200190f35b34801561048457600080fd5b506102c86004803603602081101561049b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111a0565b3480156104c457600080fd5b506102c8600480360360a08110156104db57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561051857600080fd5b82018360208201111561052a57600080fd5b8035906020019184600183028401116401000000008311171561054c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460018302840111640100000000831117156105d357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611319915050565b34801561062257600080fd5b50610466611607565b34801561063757600080fd5b5061064061160d565b604080519115158252519081900360200190f35b34801561066057600080fd5b50610466611616565b34801561067557600080fd5b5061046661161d565b34801561068a57600080fd5b50610466611624565b34801561069f57600080fd5b506102c8600480360360208110156106b657600080fd5b503561162b565b3480156106c957600080fd5b50610640600480360360208110156106e057600080fd5b503561176e565b3480156106f357600080fd5b506102df611783565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061181f6038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107e25781810151838201526020016107ca565b50505050905090810190601f16801561080f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084257818101518382015260200161082a565b50505050905090810190601f16801561086f5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600490935291205490995060ff1697506109189650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119ad603d913960400191505060405180910390fd5b8261092161179f565b1015610978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118c16045913960600191505060405180910390fd5b61098583621275006117a3565b61098d61179f565b11156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061188e6033913960400191505060405180910390fd5b600081815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a28575083610ade565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610aa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a69565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b4857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b0b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610baa576040519150601f19603f3d011682016040523d82523d6000602084013e610baf565b606091505b509150915081610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611a90603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c94578181015183820152602001610c7c565b50505050905090810190601f168015610cc15780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cf4578181015183820152602001610cdc565b50505050905090810190601f168015610d215780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610daf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119ea6038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a5a6036913960400191505060405180910390fd5b610ec8600254610ec261179f565b906117a3565b821015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611acd6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f93578181015183820152602001610f7b565b50505050905090810190601f168015610fc05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610ff3578181015183820152602001610fdb565b50505050905090810190601f1680156110205780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156110f85781810151838201526020016110e0565b50505050905090810190601f1680156111255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611158578181015183820152602001611140565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b60035460ff161561120857333014611203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611a226038913960400191505060405180910390fd5b6112a4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061193a603b913960400191505060405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806118576037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113fc5781810151838201526020016113e4565b50505050905090810190601f1680156114295780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561145c578181015183820152602001611444565b50505050905090810190601f1680156114895780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156115c15781810151838201526020016115a9565b50505050905090810190601f1680156115ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b60035460ff1681565b62278d0081565b6202a30081565b6212750081565b333014611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611b166031913960400191505060405180910390fd5b6202a3008110156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119066034913960400191505060405180910390fd5b62278d0081111561173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119756038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60046020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561181757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea2646970667358221220498537f4443644a5c9478efd7dc7e3a98b473aca4ba7972073d6959acb899d3164736f6c634300060c003354696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1CEC CODESIZE SUB DUP1 PUSH2 0x1CEC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CB5 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C7A PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x1B7C DUP1 PUSH2 0xFE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FC1F57E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6E7 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6FC1F57E EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x669 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x616 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2CA JUMPI PUSH2 0xE8 JUMP JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6FC SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x278 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x260 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2A5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH2 0xD3F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0xE27 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xE43 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1319 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1607 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x640 PUSH2 0x160D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1616 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x161D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1624 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x162B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x640 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x176E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0x1783 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x76F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181F PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x80F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x842 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x86F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x918 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19AD PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x921 PUSH2 0x179F JUMP JUMPDEST LT ISZERO PUSH2 0x978 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C1 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x985 DUP4 PUSH3 0x127500 PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x98D PUSH2 0x179F JUMP JUMPDEST GT ISZERO PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x188E PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xA28 JUMPI POP DUP4 PUSH2 0xADE JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xAA6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB48 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A90 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC94 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC7C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCC1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD21 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19EA PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A5A PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEC8 PUSH1 0x2 SLOAD PUSH2 0xEC2 PUSH2 0x179F JUMP JUMPDEST SWAP1 PUSH2 0x17A3 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF20 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ACD PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF93 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF7B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFC0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1020 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10F8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1125 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1158 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1140 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1185 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1208 JUMPI CALLER ADDRESS EQ PUSH2 0x1203 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A22 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1278 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x193A PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1389 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1857 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1429 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x145C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1444 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1489 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1561 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1549 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x158E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15C1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15A9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15EE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1683 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B16 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x16DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1906 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x173B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1975 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1817 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x50656E64696E6741646D696E3A2046697273742063 PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH20 0x657444656C61793A2044656C6179206D75737420 PUSH15 0x6F7420657863656564206D6178696D PUSH22 0x6D2064656C61792E54696D656C6F636B3A3A65786563 PUSH22 0x74655472616E73616374696F6E3A205472616E736163 PUSH21 0x696F6E206861736E2774206265656E207175657565 PUSH5 0x2E54696D65 PUSH13 0x6F636B3A3A6163636570744164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2070656E PUSH5 0x696E674164 PUSH14 0x696E2E54696D656C6F636B3A3A73 PUSH6 0x7450656E6469 PUSH15 0x6741646D696E3A2043616C6C206D75 PUSH20 0x7420636F6D652066726F6D2054696D656C6F636B 0x2E SLOAD PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA2646970667358 0x22 SLT KECCAK256 0x49 DUP6 CALLDATACOPY DELEGATECALL DIFFICULTY CALLDATASIZE DIFFICULTY 0xA5 0xC9 SELFBALANCE DUP15 REVERT PUSH30 0xC7E3A98B473ACA4BA7972073D6959ACB899D3164736F6C634300060C0033 SLOAD PUSH10 0x6D656C6F636B3A3A636F PUSH15 0x7374727563746F723A2044656C6179 KECCAK256 PUSH14 0x757374206E6F7420657863656564 KECCAK256 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A636F PUSH15 0x7374727563746F723A2044656C6179 KECCAK256 PUSH14 0x75737420657863656564206D696E PUSH10 0x6D756D2064656C61792E ",
          "sourceMap": "1793:6046:18:-:0;;;2906:416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2906:416:18;;;;;;;2662:6;2988:23;;;2967:125;;;;-1:-1:-1;;;2967:125:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:7;3123:6;:23;;3102:129;;;;-1:-1:-1;;;3102:129:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:5;:14;;-1:-1:-1;;;;;3242:14:18;;;-1:-1:-1;;;;;;3242:14:18;;;;;;;;;;3266:5;:14;3290:17;:25;;-1:-1:-1;;3290:25:18;;;1793:6046;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100e15760003560e01c80636fc1f57e1161007f578063c1a287e211610059578063c1a287e21461067e578063e177246e14610693578063f2b06537146106bd578063f851a440146106e7576100e8565b80636fc1f57e1461062b5780637d645fab14610654578063b1b43ae514610669576100e8565b80633a66f901116100bb5780633a66f901146103085780634dd18bf514610478578063591fcdfe146104b85780636a42b8f814610616576100e8565b80630825f38f146100ed5780630e18b681146102b357806326782247146102ca576100e8565b366100e857005b600080fd5b61023e600480360360a081101561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101c757600080fd5b8201836020820111156101d957600080fd5b803590602001918460018302840111640100000000831117156101fb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fc915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102c8610d3f565b005b3480156102d657600080fd5b506102df610e27565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561031457600080fd5b50610466600480360360a081101561032b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e43915050565b60408051918252519081900360200190f35b34801561048457600080fd5b506102c86004803603602081101561049b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111a0565b3480156104c457600080fd5b506102c8600480360360a08110156104db57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561051857600080fd5b82018360208201111561052a57600080fd5b8035906020019184600183028401116401000000008311171561054c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460018302840111640100000000831117156105d357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611319915050565b34801561062257600080fd5b50610466611607565b34801561063757600080fd5b5061064061160d565b604080519115158252519081900360200190f35b34801561066057600080fd5b50610466611616565b34801561067557600080fd5b5061046661161d565b34801561068a57600080fd5b50610466611624565b34801561069f57600080fd5b506102c8600480360360208110156106b657600080fd5b503561162b565b3480156106c957600080fd5b50610640600480360360208110156106e057600080fd5b503561176e565b3480156106f357600080fd5b506102df611783565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061181f6038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107e25781810151838201526020016107ca565b50505050905090810190601f16801561080f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084257818101518382015260200161082a565b50505050905090810190601f16801561086f5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600490935291205490995060ff1697506109189650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119ad603d913960400191505060405180910390fd5b8261092161179f565b1015610978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118c16045913960600191505060405180910390fd5b61098583621275006117a3565b61098d61179f565b11156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061188e6033913960400191505060405180910390fd5b600081815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a28575083610ade565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610aa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a69565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b4857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b0b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610baa576040519150601f19603f3d011682016040523d82523d6000602084013e610baf565b606091505b509150915081610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611a90603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c94578181015183820152602001610c7c565b50505050905090810190601f168015610cc15780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cf4578181015183820152602001610cdc565b50505050905090810190601f168015610d215780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610daf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119ea6038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a5a6036913960400191505060405180910390fd5b610ec8600254610ec261179f565b906117a3565b821015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611acd6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f93578181015183820152602001610f7b565b50505050905090810190601f168015610fc05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610ff3578181015183820152602001610fdb565b50505050905090810190601f1680156110205780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156110f85781810151838201526020016110e0565b50505050905090810190601f1680156111255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611158578181015183820152602001611140565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b60035460ff161561120857333014611203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611a226038913960400191505060405180910390fd5b6112a4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061193a603b913960400191505060405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806118576037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113fc5781810151838201526020016113e4565b50505050905090810190601f1680156114295780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561145c578181015183820152602001611444565b50505050905090810190601f1680156114895780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156115c15781810151838201526020016115a9565b50505050905090810190601f1680156115ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b60035460ff1681565b62278d0081565b6202a30081565b6212750081565b333014611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611b166031913960400191505060405180910390fd5b6202a3008110156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119066034913960400191505060405180910390fd5b62278d0081111561173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119756038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60046020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561181757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea2646970667358221220498537f4443644a5c9478efd7dc7e3a98b473aca4ba7972073d6959acb899d3164736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FC1F57E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6E7 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6FC1F57E EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x669 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x616 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2CA JUMPI PUSH2 0xE8 JUMP JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6FC SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x278 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x260 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2A5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH2 0xD3F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0xE27 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xE43 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1319 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1607 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x640 PUSH2 0x160D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x660 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1616 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x161D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x466 PUSH2 0x1624 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x162B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x640 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x176E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0x1783 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x76F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181F PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x80F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x842 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x86F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x918 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19AD PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x921 PUSH2 0x179F JUMP JUMPDEST LT ISZERO PUSH2 0x978 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C1 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x985 DUP4 PUSH3 0x127500 PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x98D PUSH2 0x179F JUMP JUMPDEST GT ISZERO PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x188E PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xA28 JUMPI POP DUP4 PUSH2 0xADE JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xAA6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB48 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A90 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC94 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC7C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCC1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD21 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19EA PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A5A PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEC8 PUSH1 0x2 SLOAD PUSH2 0xEC2 PUSH2 0x179F JUMP JUMPDEST SWAP1 PUSH2 0x17A3 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF20 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ACD PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF93 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF7B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFC0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1020 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10F8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1125 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1158 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1140 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1185 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1208 JUMPI CALLER ADDRESS EQ PUSH2 0x1203 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A22 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1278 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x193A PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1389 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1857 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1429 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x145C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1444 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1489 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1561 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1549 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x158E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15C1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15A9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15EE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1683 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B16 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x16DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1906 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x173B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1975 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1817 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x50656E64696E6741646D696E3A2046697273742063 PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH20 0x657444656C61793A2044656C6179206D75737420 PUSH15 0x6F7420657863656564206D6178696D PUSH22 0x6D2064656C61792E54696D656C6F636B3A3A65786563 PUSH22 0x74655472616E73616374696F6E3A205472616E736163 PUSH21 0x696F6E206861736E2774206265656E207175657565 PUSH5 0x2E54696D65 PUSH13 0x6F636B3A3A6163636570744164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2070656E PUSH5 0x696E674164 PUSH14 0x696E2E54696D656C6F636B3A3A73 PUSH6 0x7450656E6469 PUSH15 0x6741646D696E3A2043616C6C206D75 PUSH20 0x7420636F6D652066726F6D2054696D656C6F636B 0x2E SLOAD PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA2646970667358 0x22 SLT KECCAK256 0x49 DUP6 CALLDATACOPY DELEGATECALL DIFFICULTY CALLDATASIZE DIFFICULTY 0xA5 0xC9 SELFBALANCE DUP15 REVERT PUSH30 0xC7E3A98B473ACA4BA7972073D6959ACB899D3164736F6C634300060C0033 ",
          "sourceMap": "1793:6046:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6085:1584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:1584:18;;;;;;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3917:270;;;;;;;;;;;;;:::i;:::-;;2754:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4817:730;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:730:18;;;;;;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18:i;:::-;;;;;;;;;;;;;;;;4193:618;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4193:618:18;;;;:::i;5553:526::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5553:526:18;;;;;;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18:i;2787:20::-;;;;;;;;;;;;;:::i;2813:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2674:47;;;;;;;;;;;;;:::i;2622:46::-;;;;;;;;;;;;;:::i;2570:::-;;;;;;;;;;;;;:::i;3407:504::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3407:504:18;;:::i;2849:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2849:50:18;;:::i;2728:20::-;;;;;;;;;;;;;:::i;6085:1584::-;6330:5;;6271:12;;6330:5;;6316:10;:19;6295:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6428:14;6478:6;6486:5;6493:9;6504:4;6510:3;6467:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6467:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6467:47:18;;;;;;;;;;;;;6457:58;;6467:47;6457:58;;;;6546:26;;;;:18;:26;;;;;;6457:58;;-1:-1:-1;6546:26:18;;;-1:-1:-1;6525:134:18;;-1:-1:-1;;;;;;;6525:134:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6713:3;6690:19;:17;:19::i;:::-;:26;;6669:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6865:21;:3;2609:7;6865;:21::i;:::-;6842:19;:17;:19::i;:::-;:44;;6821:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7003:5;6974:26;;;:18;:26;;;;;:34;;;;;;7055:23;;7019:21;;7051:221;;-1:-1:-1;7110:4:18;7051:221;;;7213:9;7197:27;;;;;;7243:4;7156:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7145:116;;7051:221;7342:12;7356:23;7395:6;:11;;7414:5;7421:8;7395:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7341:89;;;;7461:7;7440:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7598:6;7571:63;;7590:6;7571:63;7606:5;7613:9;7624:4;7630:3;7571:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7571:63:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7652:10;6085:1584;-1:-1:-1;;;;;;;;;6085:1584:18:o;3917:270::-;3992:12;;;;3978:10;:26;3957:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:5;:18;;4104:10;4096:18;;;;;;;;-1:-1:-1;4124:25:18;;;;;;;;4165:15;;4096:18;4174:5;;;;4165:15;;;3917:270::o;2754:27::-;;;;;;:::o;4817:730::-;4993:7;5047:5;;;;5033:10;:19;5012:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5170:30;5194:5;;5170:19;:17;:19::i;:::-;:23;;:30::i;:::-;5163:3;:37;;5142:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:14;5360:6;5368:5;5375:9;5386:4;5392:3;5349:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5349:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:58;;;;;;5310:87;;5436:4;5407:18;:26;5426:6;5407:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5481:6;5456:61;;5473:6;5456:61;5489:5;5496:9;5507:4;5513:3;5456:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5456:61:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5534:6;4817:730;-1:-1:-1;;;;;;4817:730:18:o;4193:618::-;4330:17;;;;4326:396;;;4388:10;4410:4;4388:27;4363:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4326:396;;;4575:5;;;;4561:10;:19;4536:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4687:17;:24;;;;4707:4;4687:24;;;4326:396;4731:12;:28;;;;;;;;;;;;;;;;4775:29;;4791:12;;;4775:29;;-1:-1:-1;;4775:29:18;4193:618;:::o;5553:526::-;5766:5;;;;5752:10;:19;5731:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:14;5913:6;5921:5;5928:9;5939:4;5945:3;5902:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5902:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5892:58;;;;;;5863:87;;5989:5;5960:18;:26;5979:6;5960:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6036:6;6010:62;;6028:6;6010:62;6044:5;6051:9;6062:4;6068:3;6010:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6010:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5553:526;;;;;;:::o;2787:20::-;;;;:::o;2813:29::-;;;;;;:::o;2674:47::-;2714:7;2674:47;:::o;2622:46::-;2662:6;2622:46;:::o;2570:::-;2609:7;2570:46;:::o;3407:504::-;3479:10;3501:4;3479:27;3458:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2662:6;3612;:23;;3591:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:7;3744:6;:23;;3723:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3859:5;:14;;;3889:15;;3867:6;;3889:15;;;;;3407:504;:::o;2849:50::-;;;;;;;;;;;;;;;:::o;2728:20::-;;;;;;:::o;7675:162::-;7815:15;7675:162;:::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"CancelTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ExecuteTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"NewDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"QueueTransaction\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin_initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"cancelTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"queueTransaction\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"queuedTransactions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"name\":\"setDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingAdmin_\",\"type\":\"address\"}],\"name\":\"setPendingAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Timelock.sol\":\"Timelock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"contracts/Timelock.sol\":{\"keccak256\":\"0x7b997845ca8f5d81987a8e14f27e65b04feba9bf70229cea681cd871c223ce44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://234d18fbf0d4c11a35b78d476e895e88605b8e57deeaa6233a303b2951a4db71\",\"dweb:/ipfs/QmeL4JnsNn7Q5EGKq4kpmUuXqSwSjgCHHgap4ssb5cA3kR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "admin_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "CancelTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "ExecuteTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            }
          ],
          "name": "NewAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newDelay",
              "type": "uint256"
            }
          ],
          "name": "NewDelay",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newPendingAdmin",
              "type": "address"
            }
          ],
          "name": "NewPendingAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "QueueTransaction",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "GRACE_PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MAXIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "admin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "admin_initialized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "cancelTransaction",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "delay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "executeTransaction",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "queueTransaction",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "queuedTransactions",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "name": "setDelay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingAdmin_",
              "type": "address"
            }
          ],
          "name": "setPendingAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50604051611cec380380611cec8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611cb56037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b815260040180806020018281038252603b815260200180611c7a603b913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002556003805460ff19169055611b7c806100fe6000396000f3fe6080604052600436106100e15760003560e01c80636fc1f57e1161007f578063c1a287e211610059578063c1a287e21461067e578063e177246e14610693578063f2b06537146106bd578063f851a440146106e7576100e8565b80636fc1f57e1461062b5780637d645fab14610654578063b1b43ae514610669576100e8565b80633a66f901116100bb5780633a66f901146103085780634dd18bf514610478578063591fcdfe146104b85780636a42b8f814610616576100e8565b80630825f38f146100ed5780630e18b681146102b357806326782247146102ca576100e8565b366100e857005b600080fd5b61023e600480360360a081101561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101c757600080fd5b8201836020820111156101d957600080fd5b803590602001918460018302840111640100000000831117156101fb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fc915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102c8610d3f565b005b3480156102d657600080fd5b506102df610e27565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561031457600080fd5b50610466600480360360a081101561032b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e43915050565b60408051918252519081900360200190f35b34801561048457600080fd5b506102c86004803603602081101561049b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111a0565b3480156104c457600080fd5b506102c8600480360360a08110156104db57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561051857600080fd5b82018360208201111561052a57600080fd5b8035906020019184600183028401116401000000008311171561054c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460018302840111640100000000831117156105d357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611319915050565b34801561062257600080fd5b50610466611607565b34801561063757600080fd5b5061064061160d565b604080519115158252519081900360200190f35b34801561066057600080fd5b50610466611616565b34801561067557600080fd5b5061046661161d565b34801561068a57600080fd5b50610466611624565b34801561069f57600080fd5b506102c8600480360360208110156106b657600080fd5b503561162b565b3480156106c957600080fd5b50610640600480360360208110156106e057600080fd5b503561176e565b3480156106f357600080fd5b506102df611783565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061181f6038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107e25781810151838201526020016107ca565b50505050905090810190601f16801561080f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084257818101518382015260200161082a565b50505050905090810190601f16801561086f5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600490935291205490995060ff1697506109189650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119ad603d913960400191505060405180910390fd5b8261092161179f565b1015610978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118c16045913960600191505060405180910390fd5b61098583621275006117a3565b61098d61179f565b11156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061188e6033913960400191505060405180910390fd5b600081815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a28575083610ade565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610aa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a69565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b4857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b0b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610baa576040519150601f19603f3d011682016040523d82523d6000602084013e610baf565b606091505b509150915081610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611a90603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c94578181015183820152602001610c7c565b50505050905090810190601f168015610cc15780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cf4578181015183820152602001610cdc565b50505050905090810190601f168015610d215780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610daf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119ea6038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a5a6036913960400191505060405180910390fd5b610ec8600254610ec261179f565b906117a3565b821015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611acd6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f93578181015183820152602001610f7b565b50505050905090810190601f168015610fc05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610ff3578181015183820152602001610fdb565b50505050905090810190601f1680156110205780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156110f85781810151838201526020016110e0565b50505050905090810190601f1680156111255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611158578181015183820152602001611140565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b60035460ff161561120857333014611203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611a226038913960400191505060405180910390fd5b6112a4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061193a603b913960400191505060405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806118576037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113fc5781810151838201526020016113e4565b50505050905090810190601f1680156114295780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561145c578181015183820152602001611444565b50505050905090810190601f1680156114895780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156115c15781810151838201526020016115a9565b50505050905090810190601f1680156115ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b60035460ff1681565b62278d0081565b6202a30081565b6212750081565b333014611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611b166031913960400191505060405180910390fd5b6202a3008110156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119066034913960400191505060405180910390fd5b62278d0081111561173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119756038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60046020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561181757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea2646970667358221220498537f4443644a5c9478efd7dc7e3a98b473aca4ba7972073d6959acb899d3164736f6c634300060c003354696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
      "bin": "608060405234801561001057600080fd5b50604051611cec380380611cec8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611cb56037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b815260040180806020018281038252603b815260200180611c7a603b913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002556003805460ff19169055611b7c806100fe6000396000f3fe6080604052600436106100e15760003560e01c80636fc1f57e1161007f578063c1a287e211610059578063c1a287e21461067e578063e177246e14610693578063f2b06537146106bd578063f851a440146106e7576100e8565b80636fc1f57e1461062b5780637d645fab14610654578063b1b43ae514610669576100e8565b80633a66f901116100bb5780633a66f901146103085780634dd18bf514610478578063591fcdfe146104b85780636a42b8f814610616576100e8565b80630825f38f146100ed5780630e18b681146102b357806326782247146102ca576100e8565b366100e857005b600080fd5b61023e600480360360a081101561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101c757600080fd5b8201836020820111156101d957600080fd5b803590602001918460018302840111640100000000831117156101fb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fc915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102c8610d3f565b005b3480156102d657600080fd5b506102df610e27565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561031457600080fd5b50610466600480360360a081101561032b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e43915050565b60408051918252519081900360200190f35b34801561048457600080fd5b506102c86004803603602081101561049b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111a0565b3480156104c457600080fd5b506102c8600480360360a08110156104db57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561051857600080fd5b82018360208201111561052a57600080fd5b8035906020019184600183028401116401000000008311171561054c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460018302840111640100000000831117156105d357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611319915050565b34801561062257600080fd5b50610466611607565b34801561063757600080fd5b5061064061160d565b604080519115158252519081900360200190f35b34801561066057600080fd5b50610466611616565b34801561067557600080fd5b5061046661161d565b34801561068a57600080fd5b50610466611624565b34801561069f57600080fd5b506102c8600480360360208110156106b657600080fd5b503561162b565b3480156106c957600080fd5b50610640600480360360208110156106e057600080fd5b503561176e565b3480156106f357600080fd5b506102df611783565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061181f6038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107e25781810151838201526020016107ca565b50505050905090810190601f16801561080f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084257818101518382015260200161082a565b50505050905090810190601f16801561086f5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600490935291205490995060ff1697506109189650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119ad603d913960400191505060405180910390fd5b8261092161179f565b1015610978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118c16045913960600191505060405180910390fd5b61098583621275006117a3565b61098d61179f565b11156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061188e6033913960400191505060405180910390fd5b600081815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a28575083610ade565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610aa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a69565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b4857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b0b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610baa576040519150601f19603f3d011682016040523d82523d6000602084013e610baf565b606091505b509150915081610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611a90603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c94578181015183820152602001610c7c565b50505050905090810190601f168015610cc15780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cf4578181015183820152602001610cdc565b50505050905090810190601f168015610d215780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610daf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119ea6038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a5a6036913960400191505060405180910390fd5b610ec8600254610ec261179f565b906117a3565b821015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611acd6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f93578181015183820152602001610f7b565b50505050905090810190601f168015610fc05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610ff3578181015183820152602001610fdb565b50505050905090810190601f1680156110205780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156110f85781810151838201526020016110e0565b50505050905090810190601f1680156111255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611158578181015183820152602001611140565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b60035460ff161561120857333014611203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611a226038913960400191505060405180910390fd5b6112a4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061193a603b913960400191505060405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806118576037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113fc5781810151838201526020016113e4565b50505050905090810190601f1680156114295780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561145c578181015183820152602001611444565b50505050905090810190601f1680156114895780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156115c15781810151838201526020016115a9565b50505050905090810190601f1680156115ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b60035460ff1681565b62278d0081565b6202a30081565b6212750081565b333014611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611b166031913960400191505060405180910390fd5b6202a3008110156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119066034913960400191505060405180910390fd5b62278d0081111561173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119756038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60046020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561181757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea2646970667358221220498537f4443644a5c9478efd7dc7e3a98b473aca4ba7972073d6959acb899d3164736f6c634300060c003354696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
      "bin-runtime": "6080604052600436106100e15760003560e01c80636fc1f57e1161007f578063c1a287e211610059578063c1a287e21461067e578063e177246e14610693578063f2b06537146106bd578063f851a440146106e7576100e8565b80636fc1f57e1461062b5780637d645fab14610654578063b1b43ae514610669576100e8565b80633a66f901116100bb5780633a66f901146103085780634dd18bf514610478578063591fcdfe146104b85780636a42b8f814610616576100e8565b80630825f38f146100ed5780630e18b681146102b357806326782247146102ca576100e8565b366100e857005b600080fd5b61023e600480360360a081101561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101c757600080fd5b8201836020820111156101d957600080fd5b803590602001918460018302840111640100000000831117156101fb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fc915050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102c8610d3f565b005b3480156102d657600080fd5b506102df610e27565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561031457600080fd5b50610466600480360360a081101561032b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e43915050565b60408051918252519081900360200190f35b34801561048457600080fd5b506102c86004803603602081101561049b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111a0565b3480156104c457600080fd5b506102c8600480360360a08110156104db57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561051857600080fd5b82018360208201111561052a57600080fd5b8035906020019184600183028401116401000000008311171561054c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460018302840111640100000000831117156105d357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611319915050565b34801561062257600080fd5b50610466611607565b34801561063757600080fd5b5061064061160d565b604080519115158252519081900360200190f35b34801561066057600080fd5b50610466611616565b34801561067557600080fd5b5061046661161d565b34801561068a57600080fd5b50610466611624565b34801561069f57600080fd5b506102c8600480360360208110156106b657600080fd5b503561162b565b3480156106c957600080fd5b50610640600480360360208110156106e057600080fd5b503561176e565b3480156106f357600080fd5b506102df611783565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061181f6038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107e25781810151838201526020016107ca565b50505050905090810190601f16801561080f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084257818101518382015260200161082a565b50505050905090810190601f16801561086f5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600490935291205490995060ff1697506109189650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119ad603d913960400191505060405180910390fd5b8261092161179f565b1015610978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118c16045913960600191505060405180910390fd5b61098583621275006117a3565b61098d61179f565b11156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061188e6033913960400191505060405180910390fd5b600081815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a28575083610ade565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610aa657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a69565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b4857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b0b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610baa576040519150601f19603f3d011682016040523d82523d6000602084013e610baf565b606091505b509150915081610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611a90603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c94578181015183820152602001610c7c565b50505050905090810190601f168015610cc15780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cf4578181015183820152602001610cdc565b50505050905090810190601f168015610d215780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610daf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119ea6038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a5a6036913960400191505060405180910390fd5b610ec8600254610ec261179f565b906117a3565b821015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611acd6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f93578181015183820152602001610f7b565b50505050905090810190601f168015610fc05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610ff3578181015183820152602001610fdb565b50505050905090810190601f1680156110205780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156110f85781810151838201526020016110e0565b50505050905090810190601f1680156111255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611158578181015183820152602001611140565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b60035460ff161561120857333014611203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611a226038913960400191505060405180910390fd5b6112a4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061193a603b913960400191505060405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806118576037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113fc5781810151838201526020016113e4565b50505050905090810190601f1680156114295780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561145c578181015183820152602001611444565b50505050905090810190601f1680156114895780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156115c15781810151838201526020016115a9565b50505050905090810190601f1680156115ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b60035460ff1681565b62278d0081565b6202a30081565b6212750081565b333014611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611b166031913960400191505060405180910390fd5b6202a3008110156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119066034913960400191505060405180910390fd5b62278d0081111561173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119756038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60046020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561181757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea2646970667358221220498537f4443644a5c9478efd7dc7e3a98b473aca4ba7972073d6959acb899d3164736f6c634300060c0033",
      "srcmap": "1793:6046:18:-:0;;;2906:416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2906:416:18;;;;;;;2662:6;2988:23;;;2967:125;;;;-1:-1:-1;;;2967:125:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:7;3123:6;:23;;3102:129;;;;-1:-1:-1;;;3102:129:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:5;:14;;-1:-1:-1;;;;;3242:14:18;;;-1:-1:-1;;;;;;3242:14:18;;;;;;;;;;3266:5;:14;3290:17;:25;;-1:-1:-1;;3290:25:18;;;1793:6046;;;;;;",
      "srcmap-runtime": "1793:6046:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6085:1584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:1584:18;;;;;;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18;;;-1:-1:-1;6085:1584:18;;-1:-1:-1;;6085:1584:18:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3917:270;;;;;;;;;;;;;:::i;:::-;;2754:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4817:730;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:730:18;;;;;;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18;;;-1:-1:-1;4817:730:18;;-1:-1:-1;;4817:730:18:i;:::-;;;;;;;;;;;;;;;;4193:618;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4193:618:18;;;;:::i;5553:526::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5553:526:18;;;;;;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18;;;-1:-1:-1;5553:526:18;;-1:-1:-1;;5553:526:18:i;2787:20::-;;;;;;;;;;;;;:::i;2813:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2674:47;;;;;;;;;;;;;:::i;2622:46::-;;;;;;;;;;;;;:::i;2570:::-;;;;;;;;;;;;;:::i;3407:504::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3407:504:18;;:::i;2849:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2849:50:18;;:::i;2728:20::-;;;;;;;;;;;;;:::i;6085:1584::-;6330:5;;6271:12;;6330:5;;6316:10;:19;6295:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6428:14;6478:6;6486:5;6493:9;6504:4;6510:3;6467:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6467:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6467:47:18;;;;;;;;;;;;;6457:58;;6467:47;6457:58;;;;6546:26;;;;:18;:26;;;;;;6457:58;;-1:-1:-1;6546:26:18;;;-1:-1:-1;6525:134:18;;-1:-1:-1;;;;;;;6525:134:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6713:3;6690:19;:17;:19::i;:::-;:26;;6669:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6865:21;:3;2609:7;6865;:21::i;:::-;6842:19;:17;:19::i;:::-;:44;;6821:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7003:5;6974:26;;;:18;:26;;;;;:34;;;;;;7055:23;;7019:21;;7051:221;;-1:-1:-1;7110:4:18;7051:221;;;7213:9;7197:27;;;;;;7243:4;7156:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7145:116;;7051:221;7342:12;7356:23;7395:6;:11;;7414:5;7421:8;7395:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7341:89;;;;7461:7;7440:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7598:6;7571:63;;7590:6;7571:63;7606:5;7613:9;7624:4;7630:3;7571:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7571:63:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7652:10;6085:1584;-1:-1:-1;;;;;;;;;6085:1584:18:o;3917:270::-;3992:12;;;;3978:10;:26;3957:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:5;:18;;4104:10;4096:18;;;;;;;;-1:-1:-1;4124:25:18;;;;;;;;4165:15;;4096:18;4174:5;;;;4165:15;;;3917:270::o;2754:27::-;;;;;;:::o;4817:730::-;4993:7;5047:5;;;;5033:10;:19;5012:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5170:30;5194:5;;5170:19;:17;:19::i;:::-;:23;;:30::i;:::-;5163:3;:37;;5142:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:14;5360:6;5368:5;5375:9;5386:4;5392:3;5349:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5349:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:58;;;;;;5310:87;;5436:4;5407:18;:26;5426:6;5407:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5481:6;5456:61;;5473:6;5456:61;5489:5;5496:9;5507:4;5513:3;5456:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5456:61:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5534:6;4817:730;-1:-1:-1;;;;;;4817:730:18:o;4193:618::-;4330:17;;;;4326:396;;;4388:10;4410:4;4388:27;4363:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4326:396;;;4575:5;;;;4561:10;:19;4536:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4687:17;:24;;;;4707:4;4687:24;;;4326:396;4731:12;:28;;;;;;;;;;;;;;;;4775:29;;4791:12;;;4775:29;;-1:-1:-1;;4775:29:18;4193:618;:::o;5553:526::-;5766:5;;;;5752:10;:19;5731:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:14;5913:6;5921:5;5928:9;5939:4;5945:3;5902:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5902:47:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5892:58;;;;;;5863:87;;5989:5;5960:18;:26;5979:6;5960:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6036:6;6010:62;;6028:6;6010:62;6044:5;6051:9;6062:4;6068:3;6010:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6010:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5553:526;;;;;;:::o;2787:20::-;;;;:::o;2813:29::-;;;;;;:::o;2674:47::-;2714:7;2674:47;:::o;2622:46::-;2662:6;2622:46;:::o;2570:::-;2609:7;2570:46;:::o;3407:504::-;3479:10;3501:4;3479:27;3458:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2662:6;3612;:23;;3591:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:7;3744:6;:23;;3723:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3859:5;:14;;;3889:15;;3867:6;;3889:15;;;;;3407:504;:::o;2849:50::-;;;;;;;;;;;;;;;:::o;2728:20::-;;;;;;:::o;7675:162::-;7815:15;7675:162;:::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o"
    },
    "contracts/interfaces/IERC20.sol:IERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x69d98987b34e1c4489410f3f5ffebfec3db42ace81cc5dcc338110f9b91deebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24a1298fcc276c8bab898827114baf00d1961d39cf5a0a8b7df8a7d5758cc3c6\",\"dweb:/ipfs/QmSoPuqHh6Jbu4Cbx5WNbmNuqamj2QrpTKykp1dwjKdzjr\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IGovernanceToken.sol:IGovernanceToken": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "fromDelegate",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "toDelegate",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "previousBalance",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newBalance",
              "type": "uint256"
            }
          ],
          "name": "DelegateVotesChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Lock",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "canUnlockAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newCap",
              "type": "uint256"
            }
          ],
          "name": "capUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "circulatingSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            }
          ],
          "name": "delegate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "delegateBySig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            }
          ],
          "name": "delegates",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getCurrentVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lastUnlockBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "lock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockFrom",
              "type": "uint256"
            }
          ],
          "name": "lockFromUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lockOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockTo",
              "type": "uint256"
            }
          ],
          "name": "lockToUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "manualMint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "totalBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalLock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            }
          ],
          "name": "transferAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"canUnlockAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newCap\",\"type\":\"uint256\"}],\"name\":\"capUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"circulatingSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"lastUnlockBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newLockFrom\",\"type\":\"uint256\"}],\"name\":\"lockFromUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"lockOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newLockTo\",\"type\":\"uint256\"}],\"name\":\"lockToUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"manualMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_holder\",\"type\":\"address\"}],\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"transferAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockedSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IGovernanceToken.sol\":\"IGovernanceToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IGovernanceToken.sol\":{\"keccak256\":\"0x3e8f65013c18a82be3dceeb287e071d4b59bc693c10b480539c6de207a8bf4cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88beb29d1a4501032a7738ea5b15500b2e85a32988159c253d78cf67e6b577fa\",\"dweb:/ipfs/Qma8mXphd6dH6ZTvoeZi4q2XkbiV1jxtMTezL17QntzzC4\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "fromDelegate",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "toDelegate",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "previousBalance",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newBalance",
              "type": "uint256"
            }
          ],
          "name": "DelegateVotesChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Lock",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "canUnlockAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "cap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newCap",
              "type": "uint256"
            }
          ],
          "name": "capUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "circulatingSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            }
          ],
          "name": "delegate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "delegateBySig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            }
          ],
          "name": "delegates",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getCurrentVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lastUnlockBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "lock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockFrom",
              "type": "uint256"
            }
          ],
          "name": "lockFromUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "lockOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newLockTo",
              "type": "uint256"
            }
          ],
          "name": "lockToUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "manualMint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_holder",
              "type": "address"
            }
          ],
          "name": "totalBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalLock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_to",
              "type": "address"
            }
          ],
          "name": "transferAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "unlockedSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMasterBreeder.sol:IMasterBreeder": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "EmergencyWithdraw",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "lockAmount",
              "type": "uint256"
            }
          ],
          "name": "SendGovernanceTokenReward",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Withdraw",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "contract IERC20",
              "name": "_lpToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "add",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newFinish",
              "type": "uint256"
            }
          ],
          "name": "bonusFinishUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "claimReward",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_pids",
              "type": "uint256[]"
            }
          ],
          "name": "claimRewards",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newCom",
              "type": "address"
            }
          ],
          "name": "comUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            }
          ],
          "name": "dev",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "emergencyWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newFounder",
              "type": "address"
            }
          ],
          "name": "founderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalRefAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            }
          ],
          "name": "getMultiplier",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "pid1",
              "type": "uint256"
            }
          ],
          "name": "getNewRewardPerBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            }
          ],
          "name": "getPoolReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "forDev",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFarmer",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forLP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forCom",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFounders",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_user2",
              "type": "address"
            }
          ],
          "name": "getRefValueOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getTotalRefs",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newHalving",
              "type": "uint256[]"
            }
          ],
          "name": "halvingUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "lockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newcomlock",
              "type": "uint256"
            }
          ],
          "name": "lockcomUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newdevlock",
              "type": "uint256"
            }
          ],
          "name": "lockdevUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newfounderlock",
              "type": "uint256"
            }
          ],
          "name": "lockfounderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlplock",
              "type": "uint256"
            }
          ],
          "name": "locklpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newLP",
              "type": "address"
            }
          ],
          "name": "lpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "massUpdatePools",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "pendingReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "poolExistence",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "poolId1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "reclaimTokenOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseDeposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newMulReward",
              "type": "uint256[]"
            }
          ],
          "name": "rewardMulUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newReward",
              "type": "uint256"
            }
          ],
          "name": "rewardUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "set",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_devDepFees",
              "type": "uint256"
            }
          ],
          "name": "setDevDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_devFees",
              "type": "uint256[]"
            }
          ],
          "name": "setDevFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockEnds",
              "type": "uint256[]"
            }
          ],
          "name": "setStageEnds",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockStarts",
              "type": "uint256[]"
            }
          ],
          "name": "setStageStarts",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_usrDepFees",
              "type": "uint256"
            }
          ],
          "name": "setUserDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_userFees",
              "type": "uint256[]"
            }
          ],
          "name": "setUserFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newstarblock",
              "type": "uint256"
            }
          ],
          "name": "starblockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "updatePool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "userDelta",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "userInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"name\":\"SendGovernanceTokenReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newFinish\",\"type\":\"uint256\"}],\"name\":\"bonusFinishUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_pids\",\"type\":\"uint256[]\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newCom\",\"type\":\"address\"}],\"name\":\"comUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_ref\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFounder\",\"type\":\"address\"}],\"name\":\"founderUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getGlobalAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getGlobalRefAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid1\",\"type\":\"uint256\"}],\"name\":\"getNewRewardPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"getPoolReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forDev\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forFarmer\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forLP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forCom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forFounders\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user2\",\"type\":\"address\"}],\"name\":\"getRefValueOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getTotalRefs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_newHalving\",\"type\":\"uint256[]\"}],\"name\":\"halvingUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlock\",\"type\":\"uint256\"}],\"name\":\"lockUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newcomlock\",\"type\":\"uint256\"}],\"name\":\"lockcomUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newdevlock\",\"type\":\"uint256\"}],\"name\":\"lockdevUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newfounderlock\",\"type\":\"uint256\"}],\"name\":\"lockfounderUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newlplock\",\"type\":\"uint256\"}],\"name\":\"locklpUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newLP\",\"type\":\"address\"}],\"name\":\"lpUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"poolExistence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"poolId1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"reclaimTokenOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"reviseDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"reviseWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_newMulReward\",\"type\":\"uint256[]\"}],\"name\":\"rewardMulUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newReward\",\"type\":\"uint256\"}],\"name\":\"rewardUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_devDepFees\",\"type\":\"uint256\"}],\"name\":\"setDevDepFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_devFees\",\"type\":\"uint256[]\"}],\"name\":\"setDevFeeStage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_blockEnds\",\"type\":\"uint256[]\"}],\"name\":\"setStageEnds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_blockStarts\",\"type\":\"uint256[]\"}],\"name\":\"setStageStarts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_usrDepFees\",\"type\":\"uint256\"}],\"name\":\"setUserDepFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_userFees\",\"type\":\"uint256[]\"}],\"name\":\"setUserFeeStage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newstarblock\",\"type\":\"uint256\"}],\"name\":\"starblockUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"userDelta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_ref\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMasterBreeder.sol\":\"IMasterBreeder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"contracts/interfaces/IMasterBreeder.sol\":{\"keccak256\":\"0xde257908beae94f45da336106a2b605b916dde1c892472a4ca0ffbe46f8d1d10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78f5f343728f5b6c9059644c326788a884c96f38be3f03d7b684cbe0c33aca88\",\"dweb:/ipfs/QmTxwmXEnGbgKVAnwPqcg8jd2cXZscEDu9VhWsCGk5Uww2\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "EmergencyWithdraw",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "lockAmount",
              "type": "uint256"
            }
          ],
          "name": "SendGovernanceTokenReward",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Withdraw",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "contract IERC20",
              "name": "_lpToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "add",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newFinish",
              "type": "uint256"
            }
          ],
          "name": "bonusFinishUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "claimReward",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_pids",
              "type": "uint256[]"
            }
          ],
          "name": "claimRewards",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newCom",
              "type": "address"
            }
          ],
          "name": "comUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_devaddr",
              "type": "address"
            }
          ],
          "name": "dev",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "emergencyWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newFounder",
              "type": "address"
            }
          ],
          "name": "founderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getGlobalRefAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            }
          ],
          "name": "getMultiplier",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "pid1",
              "type": "uint256"
            }
          ],
          "name": "getNewRewardPerBlock",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_from",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_to",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            }
          ],
          "name": "getPoolReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "forDev",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFarmer",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forLP",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forCom",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forFounders",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_user2",
              "type": "address"
            }
          ],
          "name": "getRefValueOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "getTotalRefs",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newHalving",
              "type": "uint256[]"
            }
          ],
          "name": "halvingUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlock",
              "type": "uint256"
            }
          ],
          "name": "lockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newcomlock",
              "type": "uint256"
            }
          ],
          "name": "lockcomUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newdevlock",
              "type": "uint256"
            }
          ],
          "name": "lockdevUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newfounderlock",
              "type": "uint256"
            }
          ],
          "name": "lockfounderUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newlplock",
              "type": "uint256"
            }
          ],
          "name": "locklpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newLP",
              "type": "address"
            }
          ],
          "name": "lpUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "massUpdatePools",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            }
          ],
          "name": "pendingReward",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "poolExistence",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "poolId1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "reclaimTokenOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseDeposit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_block",
              "type": "uint256"
            }
          ],
          "name": "reviseWithdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_newMulReward",
              "type": "uint256[]"
            }
          ],
          "name": "rewardMulUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newReward",
              "type": "uint256"
            }
          ],
          "name": "rewardUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "_withUpdate",
              "type": "bool"
            }
          ],
          "name": "set",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_devDepFees",
              "type": "uint256"
            }
          ],
          "name": "setDevDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_devFees",
              "type": "uint256[]"
            }
          ],
          "name": "setDevFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockEnds",
              "type": "uint256[]"
            }
          ],
          "name": "setStageEnds",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_blockStarts",
              "type": "uint256[]"
            }
          ],
          "name": "setStageStarts",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_usrDepFees",
              "type": "uint256"
            }
          ],
          "name": "setUserDepFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "_userFees",
              "type": "uint256[]"
            }
          ],
          "name": "setUserFeeStage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newstarblock",
              "type": "uint256"
            }
          ],
          "name": "starblockUpdate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "updatePool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            }
          ],
          "name": "userDelta",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "userInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_pid",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "_ref",
              "type": "address"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IPit.sol:IPit": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "enter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_share",
              "type": "uint256"
            }
          ],
          "name": "leave",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_share\",\"type\":\"uint256\"}],\"name\":\"leave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPit.sol\":\"IPit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"contracts/interfaces/IPit.sol\":{\"keccak256\":\"0x458e10de5f40ef4dd8fc65a14dbe833511717b9459d06123f3dc369fce275668\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c27e4bc022178d996521c7bc31d73e42e4b6e0d85f456840e87e8a6d59f1169a\",\"dweb:/ipfs/QmcgnmJZFsTsto6qjF3qsM78Ect5Ba425Li7z16vhT62rH\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "name": "enter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "govToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_share",
              "type": "uint256"
            }
          ],
          "name": "leave",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/mocks/ERC20Mock.sol:ERC20Mock": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "supply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b506040516200101538038062001015833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200036e565b508051620001d39060049060208401906200036e565b50506005805460ff1916601217905550620001ef3382620001f8565b5050506200040a565b6001600160a01b03821662000254576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002626000838362000307565b6200027e816002546200030c60201b620006781790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002b1918390620006786200030c821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000367576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003b157805160ff1916838001178555620003e1565b82800160010185558215620003e1579182015b82811115620003e1578251825591602001919060010190620003c4565b50620003ef929150620003f3565b5090565b5b80821115620003ef5760008155600101620003f4565b610bfb806200041a6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f56106f3565b84846106f7565b50600192915050565b60025490565b600061041884848461083e565b6104a2846104246106f3565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f6106f3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610a0e565b6106f7565b5060019392505050565b60055460ff1690565b60006103fc6104c26106f3565b8461049d85600160006104d36106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610678565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c46106f3565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee6106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610a0e565b60006103fc6106396106f3565b848461083e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166108aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b610921838383610abf565b61096b81604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610a0e565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546109a79082610678565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f0b04004f6bab2d91d72b367a07fc13c815f6533df8f2fda7d99deae867074864736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1015 CODESIZE SUB DUP1 PUSH3 0x1015 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP DUP6 SWAP3 POP DUP5 SWAP2 PUSH3 0x1BD SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x36E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D3 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x36E JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x1EF CALLER DUP3 PUSH3 0x1F8 JUMP JUMPDEST POP POP POP PUSH3 0x40A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x254 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x262 PUSH1 0x0 DUP4 DUP4 PUSH3 0x307 JUMP JUMPDEST PUSH3 0x27E DUP2 PUSH1 0x2 SLOAD PUSH3 0x30C PUSH1 0x20 SHL PUSH3 0x678 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x2B1 SWAP2 DUP4 SWAP1 PUSH3 0x678 PUSH3 0x30C DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x3B1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3E1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3E1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3E1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3C4 JUMP JUMPDEST POP PUSH3 0x3EF SWAP3 SWAP2 POP PUSH3 0x3F3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x3EF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x3F4 JUMP JUMPDEST PUSH2 0xBFB DUP1 PUSH3 0x41A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x6F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x6F7 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x83E JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x6F3 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x6F3 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x6F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x83E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x8AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x96B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x9A7 SWAP1 DUP3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA7C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA64 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212201F0B DIV STOP 0x4F PUSH12 0xAB2D91D72B367A07FC13C815 0xF6 MSTORE8 RETURNDATASIZE 0xF8 CALLCODE REVERT 0xA7 0xD9 SWAP14 0xEA 0xE8 PUSH8 0x74864736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "115:205:23:-:0;;;149:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;2032:13:2;;149:169:23;;-1:-1:-1;262:4:23;;-1:-1:-1;268:6:23;;2032:13:2;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;286:25:23::1;292:10;304:6:::0;286:5:::1;:25::i;:::-;149:169:::0;;;115:205;;7832:370:2;-1:-1:-1;;;;;7915:21:2;;7907:65;;;;;-1:-1:-1;;;7907:65:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:24;8075:6;8058:12;;:16;;;;;;:24;;;;:::i;:::-;8043:12;:39;-1:-1:-1;;;;;8113:18:2;;:9;:18;;;;;;;;;;;;:30;;8136:6;;8113:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;8092:18:2;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;10701:92::-;;;;:::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;115:205:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;115:205:23;;;-1:-1:-1;115:205:23;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f56106f3565b84846106f7565b50600192915050565b60025490565b600061041884848461083e565b6104a2846104246106f3565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f6106f3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610a0e565b6106f7565b5060019392505050565b60055460ff1690565b60006103fc6104c26106f3565b8461049d85600160006104d36106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610678565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c46106f3565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee6106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610a0e565b60006103fc6106396106f3565b848461083e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166108aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b610921838383610abf565b61096b81604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610a0e565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546109a79082610678565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f0b04004f6bab2d91d72b367a07fc13c815f6533df8f2fda7d99deae867074864736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x6F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x6F7 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x83E JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x6F3 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x6F3 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x6F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x6F3 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x83E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x8AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x921 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x96B DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x9A7 SWAP1 DUP3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA7C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA64 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212201F0B DIV STOP 0x4F PUSH12 0xAB2D91D72B367A07FC13C815 0xF6 MSTORE8 RETURNDATASIZE 0xF8 CALLCODE REVERT 0xA7 0xD9 SWAP14 0xEA 0xE8 PUSH8 0x74864736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "115:205:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;3399:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;2168:89::-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;3399:125::-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;10701:92:2:-;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/mocks/ERC20Mock.sol\":{\"keccak256\":\"0x59b1ca07d821d69983a1b0366efd51d89f04965277406b67c69f41ad2cc3097a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82d4b90a7740f54b90bf7b7a640a3ad5244c7baf08960124431d770a24bd1a21\",\"dweb:/ipfs/QmQ2YNr2uhT77w6VKFzUSWkGgKjqxBU9rFmD3SGS53HThR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "supply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040523480156200001157600080fd5b506040516200101538038062001015833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200036e565b508051620001d39060049060208401906200036e565b50506005805460ff1916601217905550620001ef3382620001f8565b5050506200040a565b6001600160a01b03821662000254576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002626000838362000307565b6200027e816002546200030c60201b620006781790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002b1918390620006786200030c821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000367576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003b157805160ff1916838001178555620003e1565b82800160010185558215620003e1579182015b82811115620003e1578251825591602001919060010190620003c4565b50620003ef929150620003f3565b5090565b5b80821115620003ef5760008155600101620003f4565b610bfb806200041a6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f56106f3565b84846106f7565b50600192915050565b60025490565b600061041884848461083e565b6104a2846104246106f3565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f6106f3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610a0e565b6106f7565b5060019392505050565b60055460ff1690565b60006103fc6104c26106f3565b8461049d85600160006104d36106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610678565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c46106f3565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee6106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610a0e565b60006103fc6106396106f3565b848461083e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166108aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b610921838383610abf565b61096b81604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610a0e565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546109a79082610678565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f0b04004f6bab2d91d72b367a07fc13c815f6533df8f2fda7d99deae867074864736f6c634300060c0033",
      "bin": "60806040523480156200001157600080fd5b506040516200101538038062001015833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200036e565b508051620001d39060049060208401906200036e565b50506005805460ff1916601217905550620001ef3382620001f8565b5050506200040a565b6001600160a01b03821662000254576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002626000838362000307565b6200027e816002546200030c60201b620006781790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002b1918390620006786200030c821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000367576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003b157805160ff1916838001178555620003e1565b82800160010185558215620003e1579182015b82811115620003e1578251825591602001919060010190620003c4565b50620003ef929150620003f3565b5090565b5b80821115620003ef5760008155600101620003f4565b610bfb806200041a6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f56106f3565b84846106f7565b50600192915050565b60025490565b600061041884848461083e565b6104a2846104246106f3565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f6106f3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610a0e565b6106f7565b5060019392505050565b60055460ff1690565b60006103fc6104c26106f3565b8461049d85600160006104d36106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610678565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c46106f3565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee6106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610a0e565b60006103fc6106396106f3565b848461083e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166108aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b610921838383610abf565b61096b81604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610a0e565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546109a79082610678565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f0b04004f6bab2d91d72b367a07fc13c815f6533df8f2fda7d99deae867074864736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f56106f3565b84846106f7565b50600192915050565b60025490565b600061041884848461083e565b6104a2846104246106f3565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f6106f3565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610a0e565b6106f7565b5060019392505050565b60055460ff1690565b60006103fc6104c26106f3565b8461049d85600160006104d36106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610678565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c46106f3565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee6106f3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610a0e565b60006103fc6106396106f3565b848461083e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166108aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b610921838383610abf565b61096b81604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610a0e565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546109a79082610678565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f0b04004f6bab2d91d72b367a07fc13c815f6533df8f2fda7d99deae867074864736f6c634300060c0033",
      "srcmap": "115:205:23:-:0;;;149:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;149:169:23;;;;;;;2032:13:2;;149:169:23;;-1:-1:-1;262:4:23;;-1:-1:-1;268:6:23;;2032:13:2;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2055:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:2;:14;;-1:-1:-1;;2082:14:2;2094:2;2082:14;;;-1:-1:-1;286:25:23::1;292:10;304:6:::0;286:5:::1;:25::i;:::-;149:169:::0;;;115:205;;7832:370:2;-1:-1:-1;;;;;7915:21:2;;7907:65;;;;;-1:-1:-1;;;7907:65:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:24;8075:6;8058:12;;:16;;;;;;:24;;;;:::i;:::-;8043:12;:39;-1:-1:-1;;;;;8113:18:2;;:9;:18;;;;;;;;;;;;:30;;8136:6;;8113:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;8092:18:2;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;10701:92::-;;;;:::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;115:205:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;115:205:23;;;-1:-1:-1;115:205:23;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "115:205:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:2;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:2;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:2;;;;;;;;;:::i;3399:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;;;;:::i;2370:93::-;;;:::i;6291:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:2;;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:2;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:2;;;;;;;;;;;:::i;2168:89::-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;3399:125::-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;6291:266;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;2690:175:1:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;598:104:6:-;685:10;598:104;:::o;9355:340:2:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;10701:92:2:-;;;;:::o"
    },
    "contracts/mocks/PitBreederExploitMock.sol:PitBreederExploitMock": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pitBreeder",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "convert",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pitBreeder",
          "outputs": [
            {
              "internalType": "contract PitBreeder",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60a060405234801561001057600080fd5b506040516102303803806102308339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166101c661006a6000398060ab528060cf52506101c66000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634aa50c261461003b578063bd1b820c1461006c575b600080fd5b6100436100a9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a76004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166100cd565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd1b820c83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50505050505056fea2646970667358221220abcf46c7976df903dd94a73288354997daa7ab7e908aeb59aaef5569f5d287a464736f6c634300060c0033",
          "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x230 CODESIZE SUB DUP1 PUSH2 0x230 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C6 PUSH2 0x6A PUSH1 0x0 CODECOPY DUP1 PUSH1 0xAB MSTORE DUP1 PUSH1 0xCF MSTORE POP PUSH2 0x1C6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4AA50C26 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBD1B820C EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBD1B820C DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0xCF CHAINID 0xC7 SWAP8 PUSH14 0xF903DD94A73288354997DAA7AB7E SWAP1 DUP11 0xEB MSIZE 0xAA 0xEF SSTORE PUSH10 0xF5D287A464736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "87:292:24:-:0;;;169:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:93:24;219:36;;;;-1:-1:-1;;;;;;219:36:24;;;-1:-1:-1;;;;;87:292:24;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "9482": [
              {
                "length": 32,
                "start": 171
              },
              {
                "length": 32,
                "start": 207
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80634aa50c261461003b578063bd1b820c1461006c575b600080fd5b6100436100a9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a76004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166100cd565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd1b820c83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50505050505056fea2646970667358221220abcf46c7976df903dd94a73288354997daa7ab7e908aeb59aaef5569f5d287a464736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4AA50C26 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBD1B820C EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBD1B820C DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0xCF CHAINID 0xC7 SWAP8 PUSH14 0xF903DD94A73288354997DAA7AB7E SWAP1 DUP11 0xEB MSIZE 0xAA 0xEF SSTORE PUSH10 0xF5D287A464736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "87:292:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;124:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;268:109;;;;;;;;;;;;;;;;-1:-1:-1;268:109:24;;;;;;;;;;;:::i;:::-;;124:38;;;:::o;268:109::-;336:10;:18;;;355:6;363;336:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;268:109;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pitBreeder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"convert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pitBreeder\",\"outputs\":[{\"internalType\":\"contract PitBreeder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/PitBreederExploitMock.sol\":\"PitBreederExploitMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"contracts/PitBreeder.sol\":{\"keccak256\":\"0x8b6f85286cb9e8074c2820a08e341f47cd5ce27ee04d2391f7b5da3348f569d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc136ad30a02fd1ebde81805b0884be25c4a5216a56bece6527e0ef061010728\",\"dweb:/ipfs/QmcmVkSMvKgwjGr56Gr1mw6E8mi5YH51oFmyq42k8hz1PG\"]},\"contracts/mocks/PitBreederExploitMock.sol\":{\"keccak256\":\"0x663367502c3dfd288b05a4dda0da5d884a573470d41f47215aab6600ae6a7efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa95079aad63a97913cf0cec6c53bee8686252107e4268578c30ea78a46555d\",\"dweb:/ipfs/QmeFhDTaur5YgtCfsozN2Z9TLGyAVZwz7fbgLuDJ3H4LQ6\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol\":{\"keccak256\":\"0xd179ddb73cdb485120799c3e5f446bd4f9885205528f1e51eda8b3074a819d88\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea5afb5efa71c14f1e3484e4d4a10cab3c94d116d357e517eaa658bdd4591a3b\",\"dweb:/ipfs/QmRH5VJr6NAAKk4DXT85Pf6B6frLViUnHf8bFbfGeKt8Q8\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x3368b1700fc4a77b780967cdd03c731da787a99f054f69f4b404d3cd3691712d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://47521585cb5e7f2a8a1586b7d4f09e5ffc80929af8f9ed18012a1b4a82920b9f\",\"dweb:/ipfs/QmdHmVCdnyDq9GFDuRKXe69ATcY4ABXehHzoKRnzxtWNFv\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pitBreeder",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "convert",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pitBreeder",
          "outputs": [
            {
              "internalType": "contract PitBreeder",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "60a060405234801561001057600080fd5b506040516102303803806102308339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166101c661006a6000398060ab528060cf52506101c66000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634aa50c261461003b578063bd1b820c1461006c575b600080fd5b6100436100a9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a76004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166100cd565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd1b820c83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50505050505056fea2646970667358221220abcf46c7976df903dd94a73288354997daa7ab7e908aeb59aaef5569f5d287a464736f6c634300060c0033",
      "bin": "60a060405234801561001057600080fd5b506040516102303803806102308339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166101c661006a6000398060ab528060cf52506101c66000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634aa50c261461003b578063bd1b820c1461006c575b600080fd5b6100436100a9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a76004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166100cd565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd1b820c83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50505050505056fea2646970667358221220abcf46c7976df903dd94a73288354997daa7ab7e908aeb59aaef5569f5d287a464736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c80634aa50c261461003b578063bd1b820c1461006c575b600080fd5b6100436100a9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a76004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166100cd565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd1b820c83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50505050505056fea2646970667358221220abcf46c7976df903dd94a73288354997daa7ab7e908aeb59aaef5569f5d287a464736f6c634300060c0033",
      "srcmap": "87:292:24:-:0;;;169:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:93:24;219:36;;;;-1:-1:-1;;;;;;219:36:24;;;-1:-1:-1;;;;;87:292:24;;;;;;;;",
      "srcmap-runtime": "87:292:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;124:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;268:109;;;;;;;;;;;;;;;;-1:-1:-1;268:109:24;;;;;;;;;;;:::i;:::-;;124:38;;;:::o;268:109::-;336:10;:18;;;355:6;363;336:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;268:109;;:::o"
    },
    "contracts/mocks/VenomSwapFactoryMock.sol:VenomSwapFactoryMock": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220d04e53254b8f18d34afac4ca8b818ee55c9032a7cbe6f74fff80e05e7ba6850a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x35A9 CODESIZE SUB DUP1 PUSH2 0x35A9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3546 DUP1 PUSH2 0x63 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AAB9248 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC9C65396 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x1CB JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9AAB9248 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x120 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x236 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x36F JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x243 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x282 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x328 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x449 JUMPI DUP4 DUP6 PUSH2 0x44C JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x574 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x586 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP SWAP1 POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x485CC955 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x85C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2C60 DUP1 PUSH2 0x8B1 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C0033A2646970667358221220D04E53254B8F XOR 0xD3 0x4A STATICCALL 0xC4 0xCA DUP12 DUP2 DUP15 0xE5 0x5C SWAP1 ORIGIN 0xA7 0xCB 0xE6 0xF7 0x4F SELFDESTRUCT DUP1 0xE0 0x5E PUSH28 0xA6850A64736F6C634300060C00330000000000000000000000000000 ",
          "sourceMap": "116:132:25:-:0;;;172:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;172:74:25;530:11:29;:26;;-1:-1:-1;;;;;;530:26:29;-1:-1:-1;;;;;530:26:29;;;;;;;;;116:132:25;;;-1:-1:-1;116:132:25;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220d04e53254b8f18d34afac4ca8b818ee55c9032a7cbe6f74fff80e05e7ba6850a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AAB9248 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC9C65396 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x1CB JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9AAB9248 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x120 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x236 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x36F JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x243 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x282 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x328 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x449 JUMPI DUP4 DUP6 PUSH2 0x44C JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x574 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x586 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP SWAP1 POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x485CC955 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x85C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2C60 DUP1 PUSH2 0x8B1 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C0033A2646970667358221220D04E53254B8F XOR 0xD3 0x4A STATICCALL 0xC4 0xCA DUP12 DUP2 DUP15 0xE5 0x5C SWAP1 ORIGIN 0xA7 0xCB 0xE6 0xF7 0x4F SELFDESTRUCT DUP1 0xE0 0x5E PUSH28 0xA6850A64736F6C634300060C00330000000000000000000000000000 ",
          "sourceMap": "116:132:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:29:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;227:35;;;:::i;346:34::-;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;;:::i;569:103::-;;;:::i;:::-;;;;;;;;;;;;;;;;678:123;;;:::i;1926:175::-;;;;;;;;;;;;;;;;-1:-1:-1;1926:175:29;;;;:::i;:::-;;807:956;;;;;;;;;;;;;;;;-1:-1:-1;807:956:29;;;;;;;;;;;:::i;269:71::-;;;;;;;;;;;;;;;;-1:-1:-1;269:71:29;;;;;;;;;;;:::i;1769:151::-;;;;;;;;;;;;;;;;-1:-1:-1;1769:151:29;;;;:::i;192:29::-;;;;;;:::o;227:35::-;;;;;;:::o;346:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;:::o;569:103::-;650:8;:15;569:103;:::o;678:123::-;725:7;761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;751:43;;;;;;744:50;;678:123;:::o;1926:175::-;2022:11;;;;2008:10;:25;2000:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2068:11;:26;;;;;;;;;;;;;;;1926:175::o;807:956::-;886:12;928:6;918:16;;:6;:16;;;;910:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:14;996;1023:6;1014:15;;:6;:15;;;:53;;1052:6;1060;1014:53;;;1033:6;1041;1014:53;979:88;;-1:-1:-1;979:88:29;-1:-1:-1;1085:20:29;;;1077:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:37;:15;;;1186:1;1151:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;1143:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1255:21;1279:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1255:56;;1321:12;1363:6;1371;1346:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:43;;;;;;1321:58;;1467:4;1456:8;1450:15;1445:2;1435:8;1431:17;1428:1;1420:52;1412:60;;1505:4;1491:30;;;1522:6;1530;1491:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1547:15:29;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;1587:15;;;;;;:23;;;;;;;;:30;;;;;;;;1672:8;:19;;-1:-1:-1;1672:19:29;;;;;;;;;;;;;;;;;;;;;;1740:15;;1706:50;;;;;;;;;;;;;;;;;;;;;;807:956;;;;;;;;:::o;269:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1769:151::-;1853:11;;;;1839:10;:25;1831:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:5;:14;;;;;;;;;;;;;;;1769:151::o;-1:-1:-1:-;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/VenomSwapFactoryMock.sol\":\"VenomSwapFactoryMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/mocks/VenomSwapFactoryMock.sol\":{\"keccak256\":\"0x9fb172dee764d7cc1662d0c95f326f6cab55f9f3fc51a80554445dd13017ce3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04d4a8ef4cc1420b908dbded99284ed3c25937855de1985ef8b5d3a56250abd5\",\"dweb:/ipfs/QmS7zsTHGPnMHc2XP5ztKbdwbBNWmf6VftxozVaR3JR5Q1\"]},\"elephantdexcore/contracts/UniswapV2ERC20.sol\":{\"keccak256\":\"0x23fd4ed2f1624e38f9100c119e65b4eaef7e216f069f735a4a373bee49b970c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a745ba8357e0f2fdf05c68610491c09f469fee29c74cf924dac0ddc3b0e1cfc7\",\"dweb:/ipfs/QmRdmbCrhiqwmhj8C4Lb7ZXoJTZEciLPEUvKhvt87n3Bwb\"]},\"elephantdexcore/contracts/UniswapV2Factory.sol\":{\"keccak256\":\"0xe1ed816918c38ac334da846a8592176081e9d9139e77c9efd1404dad91f5df38\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3fee6a171f1516da426eaef137c89370619b6325a6b2ce5741eb1f45541062fb\",\"dweb:/ipfs/QmdusYSPBVWbpAW3NXCwz62rqxvKdcNLykjBnCwSTPb8UC\"]},\"elephantdexcore/contracts/UniswapV2Pair.sol\":{\"keccak256\":\"0xfd3327e1172e647fcaa5b2d1f5b6d7c56d40b5ccb693f37e0f5023898364486d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://016a836a09b4693ce37baaf14252c4937461d0b05767c8df86878fd111f4e913\",\"dweb:/ipfs/QmQXAzhsUj3dVVDmC42LatXHKAAuWNgxPQRSkEX9s2xhLa\"]},\"elephantdexcore/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x76866491759a6f069ddc030d52df08d4105a8bcef0e3330dee261cf7ee049b1a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3b2a687415260c33e491cc2d03577729802b5ff8227cc9fd7b45b28cbd24e4\",\"dweb:/ipfs/QmNtBCKh68KLnNj8M2rQDPnbBfKhntzaZ1JReQx4Axtx5w\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":{\"keccak256\":\"0x6bf2e1cd601f8df7a25606a03fb01532f33aa5d77278ef6e7fb72a3b95a2d8d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aaaf7c44351d883b3830e484cc20fe1f91b832aaeb8c4631b1848b6bb08c7661\",\"dweb:/ipfs/QmbxistLwfsuywWLHgBpDcQu4f5j6wV13Vs3JrSd1gjX9N\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/libraries/Math.sol\":{\"keccak256\":\"0x3e0a5520297ed1dc711407fb10e309db409fc8143e19a0a7751aa064bb99dfa1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5d44428171de5cd02c255aebd53d88e78cfee0b877bc1a13bbafa6e83eb0597d\",\"dweb:/ipfs/QmXLVkrxEpA57vgP2CYh26PPGqaFy8C5peKKSdLobfCv31\"]},\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]},\"elephantdexcore/contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc4574ee73aa220d7a8b363ef7c874c099b6007b0f30365993e758c8337a294d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e27c362f1a0f0bf97004bccab2b19faaea0706bc8a21febca6e365de77a20536\",\"dweb:/ipfs/QmZipPjDSok9FxPjMB5rPTuJ7P2VvhaNzHA92TpYvE16FR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220d04e53254b8f18d34afac4ca8b818ee55c9032a7cbe6f74fff80e05e7ba6850a64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220d04e53254b8f18d34afac4ca8b818ee55c9032a7cbe6f74fff80e05e7ba6850a64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220d04e53254b8f18d34afac4ca8b818ee55c9032a7cbe6f74fff80e05e7ba6850a64736f6c634300060c0033",
      "srcmap": "116:132:25:-:0;;;172:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;172:74:25;530:11:29;:26;;-1:-1:-1;;;;;;530:26:29;-1:-1:-1;;;;;530:26:29;;;;;;;;;116:132:25;;;-1:-1:-1;116:132:25;;",
      "srcmap-runtime": "116:132:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:29:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;227:35;;;:::i;346:34::-;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;;:::i;569:103::-;;;:::i;:::-;;;;;;;;;;;;;;;;678:123;;;:::i;1926:175::-;;;;;;;;;;;;;;;;-1:-1:-1;1926:175:29;;;;:::i;:::-;;807:956;;;;;;;;;;;;;;;;-1:-1:-1;807:956:29;;;;;;;;;;;:::i;269:71::-;;;;;;;;;;;;;;;;-1:-1:-1;269:71:29;;;;;;;;;;;:::i;1769:151::-;;;;;;;;;;;;;;;;-1:-1:-1;1769:151:29;;;;:::i;192:29::-;;;;;;:::o;227:35::-;;;;;;:::o;346:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;:::o;569:103::-;650:8;:15;569:103;:::o;678:123::-;725:7;761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;751:43;;;;;;744:50;;678:123;:::o;1926:175::-;2022:11;;;;2008:10;:25;2000:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2068:11;:26;;;;;;;;;;;;;;;1926:175::o;807:956::-;886:12;928:6;918:16;;:6;:16;;;;910:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:14;996;1023:6;1014:15;;:6;:15;;;:53;;1052:6;1060;1014:53;;;1033:6;1041;1014:53;979:88;;-1:-1:-1;979:88:29;-1:-1:-1;1085:20:29;;;1077:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:37;:15;;;1186:1;1151:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;1143:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1255:21;1279:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1255:56;;1321:12;1363:6;1371;1346:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:43;;;;;;1321:58;;1467:4;1456:8;1450:15;1445:2;1435:8;1431:17;1428:1;1420:52;1412:60;;1505:4;1491:30;;;1522:6;1530;1491:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1547:15:29;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;1587:15;;;;;;:23;;;;;;;;:30;;;;;;;;1672:8;:19;;-1:-1:-1;1672:19:29;;;;;;;;;;;;;;;;;;;;;;1740:15;;1706:50;;;;;;;;;;;;;;;;;;;;;;807:956;;;;;;;;:::o;269:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1769:151::-;1853:11;;;;1839:10;:25;1831:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:5;:14;;;;;;;;;;;;;;;1769:151::o;-1:-1:-1:-;;;;;;;;:::o"
    },
    "contracts/mocks/VenomSwapPairMock.sol:VenomSwapPairMock": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a5cceb59cb5307812538300cc35508fc59b49cc621033f5a1b9792d3219208a964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 0xCC 0xEB MSIZE 0xCB MSTORE8 SMOD DUP2 0x25 CODESIZE ADDRESS 0xC 0xC3 SSTORE ADDMOD 0xFC MSIZE 0xB4 SWAP13 0xC6 0x21 SUB EXTCODEHASH GAS SHL SWAP8 SWAP3 0xD3 0x21 SWAP3 ADDMOD 0xA9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "113:91:26:-:0;;;1126:1:30;1102:25;;163:39:26;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;;;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;;;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;2213:7:30;:20;;-1:-1:-1;;;;;;2213:20:30;2223:10;2213:20;;;113:91:26;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a5cceb59cb5307812538300cc35508fc59b49cc621033f5a1b9792d3219208a964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 0xCC 0xEB MSIZE 0xCB MSTORE8 SMOD DUP2 0x25 CODESIZE ADDRESS 0xC 0xC3 SSTORE ADDMOD 0xFC MSIZE 0xB4 SWAP13 0xC6 0x21 SUB EXTCODEHASH GAS SHL SWAP8 SWAP3 0xD3 0x21 SWAP3 ADDMOD 0xA9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "113:91:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7375:1875:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7375:1875:30;;-1:-1:-1;7375:1875:30;-1:-1:-1;7375:1875:30;:::i;:::-;;166:49:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1270:227:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144:28;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;578:21:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;313:24:28;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;2302:206:30:-;;;;;;;;;;;;;;;;-1:-1:-1;2302:206:30;;;;;;;;;;;:::i;922:32::-;;;:::i;960:::-;;;:::i;4452:1233::-;;;;;;;;;;;;;;;;-1:-1:-1;4452:1233:30;;;;:::i;343:41:28:-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;998:17:30:-;;;:::i;713:38:28:-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;5794:1472:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5794:1472:30;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;221:45:28;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;403:46:30:-;;;:::i;9296:343::-;;;;;;;;;;;;;;;;-1:-1:-1;9296:343:30;;;;:::i;550:22::-;;;:::i;605:21::-;;;:::i;2766:662:28:-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:61::-;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;9685:170:30:-;;;:::i;7375:1875::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;7488:14;;;;:32:::1;;;7519:1;7506:10;:14;7488:32;7480:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:17;7592::::0;7614:13:::1;:11;:13::i;:::-;7572:55;;;;;7673:9;7660:22;;:10;:22;:48;;;;;7699:9;7686:22;;:10;:22;7660:48;7652:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7886:6;::::0;7920::::1;::::0;7757:13:::1;::::0;;;7886:6:::1;::::0;;::::1;::::0;7920;;::::1;::::0;7944:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;7967:7;7961:13;;:2;:13;;;;7944:30;7936:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8014:14:::0;;8010:58:::1;;8030:38;8044:7;8053:2;8057:10;8030:13;:38::i;:::-;8116:14:::0;;8112:58:::1;;8132:38;8146:7;8155:2;8159:10;8132:13;:38::i;:::-;8218:15:::0;;8214:97:::1;;8252:2;8235:34;;;8270:10;8282;8294;8306:4;;8235:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8214:97;8332:47;::::0;;;;;8373:4:::1;8332:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8332:47:30;8400::::1;::::0;;;;;8441:4:::1;8400:47;::::0;::::1;::::0;;;8332;;-1:-1:-1;8400:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;8332::::1;::::0;8400;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8400:47:30;;-1:-1:-1;8467:14:30::1;::::0;-1:-1:-1;;8495:22:30::1;::::0;::::1;::::0;;::::1;8484:33:::0;::::1;:75;;8558:1;8484:75;;;8544:10;8532:9;:22;;;8520:8;:35;8484:75;8467:92;;8569:14;8609:10;8597:9;:22;;;8586:8;:33;:75;;8660:1;8586:75;;;8646:10;8634:9;:22;;;8622:8;:35;8586:75;8569:92;;8691:1;8679:9;:13;:30;;;;8708:1;8696:9;:13;8679:30;8671:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8834:21;8858:40;8881:16;:9:::0;8895:1:::1;8881:13;:16::i;:::-;8858:18;:8:::0;8871:4:::1;8858:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;8834:64:::0;-1:-1:-1;8908:21:30::1;8932:40;8955:16;:9:::0;8969:1:::1;8955:13;:16::i;8932:40::-;8908:64:::0;-1:-1:-1;9032:43:30::1;9067:7;9032:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;8990:38;:16:::0;9011;8990:20:::1;:38::i;:::-;:85;;8982:110;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1234:1;;9113:49;9121:8;9131;9141:9;9152;9113:7;:49::i;:::-;9177:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;9182:10:::1;::::0;9177:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;;;;;;;;;7375:1875:30:o;166:49:28:-;;;;;;;;;;;;;;;;;;;:::o;1270:227:30:-;1402:8;;;;;;;1432;;;;;;;1472:18;;;;;;1270:227::o;2173:144:28:-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;578:21:30:-;;;;;;:::o;313:24:28:-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;2302:206:30:-;2397:7;;;;2383:10;:21;2375:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:16;;;;;;;;;;;;;;2485:6;:16;;;;;;;;;;;2302:206::o;922:32::-;;;;:::o;960:::-;;;;:::o;4452:1233::-;4501:14;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;4569:13:::1;:11;:13::i;:::-;-1:-1:-1::0;4637:6:30::1;::::0;4623:46:::1;::::0;;;;;4663:4:::1;4623:46;::::0;::::1;::::0;;;4527:55;;-1:-1:-1;4527:55:30;;-1:-1:-1;4607:13:30::1;::::0;4637:6:::1;::::0;;::::1;::::0;4623:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;4637:6;4623:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4623:46:30;4709:6:::1;::::0;4695:46:::1;::::0;;;;;4735:4:::1;4695:46;::::0;::::1;::::0;;;4623;;-1:-1:-1;4679:13:30::1;::::0;4709:6:::1;::::0;;::::1;::::0;4695:31:::1;::::0;:46;;;;;4623::::1;::::0;4695;;;;;;;;4709:6;4695:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4695:46:30;;-1:-1:-1;4751:12:30::1;4766:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4751:38:::0;-1:-1:-1;4799:12:30::1;4814:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4799:38;;4848:10;4861:30;4870:9;4881;4861:8;:30::i;:::-;4901:17;4921:11:::0;4848:43;;-1:-1:-1;5024:17:30;5020:347:::1;;5069:54;444:5;5069:31;5079:20;:7:::0;5091;5079:11:::1;:20::i;:::-;5069:9;:31::i;:54::-;5057:66;;5136:36;5150:1;444:5;5136;:36::i;:::-;5020:347;;;5270:86;5279:37;::::0;::::1;:25;:7:::0;5291:12;5279:11:::1;:25::i;:::-;:37;;;;;;5318;::::0;::::1;:25;:7:::0;5330:12;5318:11:::1;:25::i;:::-;:37;;;;;;5270:8;:86::i;:::-;5258:98;;5020:347;5396:1;5384:9;:13;5376:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:20;5458:2;5462:9;5452:5;:20::i;:::-;5483:49;5491:8;5501;5511:9;5522;5483:7;:49::i;:::-;5546:5;5542:47;;;5580:8;::::0;5561:28:::1;::::0;5580:8:::1;5566::::0;;::::1;::::0;5580;;::::1;;5561:18;:28::i;:::-;5553:5;:36:::0;5542:47:::1;5644:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;5649:10:::1;::::0;5644:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;4452:1233:30;;;-1:-1:-1;;;;;;4452:1233:30:o;343:41:28:-;;;;;;;;;;;;;:::o;998:17:30:-;;;;:::o;713:38:28:-;;;;;;;;;;;;;:::o;5794:1472:30:-;5843:12;5857;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;5923:13:::1;:11;:13::i;:::-;-1:-1:-1::0;5979:6:30::1;::::0;6059::::1;::::0;6137:47:::1;::::0;;;;;6178:4:::1;6137:47;::::0;::::1;::::0;;;5881:55;;-1:-1:-1;5881:55:30;;-1:-1:-1;5979:6:30::1;::::0;;::::1;::::0;6059;::::1;::::0;5961:15:::1;::::0;5979:6;;6137:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;5979:6;6137:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6137:47:30;6210::::1;::::0;;;;;6251:4:::1;6210:47;::::0;::::1;::::0;;;6137;;-1:-1:-1;6194:13:30::1;::::0;6210:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6137::::1;::::0;6210;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6210:47:30;6302:4:::1;6267:14;6284:24:::0;;;:9:::1;6210:47;6284:24:::0;;;;;6210:47;;-1:-1:-1;6332:30:30::1;6341:9:::0;6352;6332:8:::1;:30::i;:::-;6372:17;6392:11:::0;6319:43;;-1:-1:-1;6392:11:30;6501:23:::1;:9:::0;6515:8;6501:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;6633:12:30;6607:23:::1;:9:::0;6621:8;6607:13:::1;:23::i;:::-;:38;;;;;;6597:48;;6721:1;6711:7;:11;:26;;;;;6736:1;6726:7;:11;6711:26;6703:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6792:31;6806:4;6813:9;6792:5;:31::i;:::-;6833:35;6847:7;6856:2;6860:7;6833:13;:35::i;:::-;6878;6892:7;6901:2;6905:7;6878:13;:35::i;:::-;6934:47;::::0;;;;;6975:4:::1;6934:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6934:47:30;7002::::1;::::0;;;;;7043:4:::1;7002:47;::::0;::::1;::::0;;;6934;;-1:-1:-1;7002:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6934::::1;::::0;7002;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;7002:47:30;;-1:-1:-1;7060:49:30::1;7068:8:::0;7002:47;7088:9;7099;7060:7:::1;:49::i;:::-;7123:5;7119:47;;;7157:8;::::0;7138:28:::1;::::0;7157:8:::1;7143::::0;;::::1;::::0;7157;;::::1;;7138:18;:28::i;:::-;7130:5;:36:::0;7119:47:::1;7221:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;7226:10:::1;::::0;7221:38:::1;::::0;;;;;;;;;::::1;1234:1;;;;;;;;;1256::::0;1245:8;:12;;;;5794:1472;;;:::o;221:45:28:-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;403:46:30:-;444:5;403:46;:::o;9296:343::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9364:6:::1;::::0;9413::::1;::::0;9523:8:::1;::::0;9471:47:::1;::::0;;;;;9512:4:::1;9471:47;::::0;::::1;::::0;;;9364:6:::1;::::0;;::::1;::::0;9413;;::::1;::::0;9444:89:::1;::::0;9364:6;;9467:2;;9471:61:::1;::::0;9523:8:::1;;::::0;9364:6;;9471:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;9364:6;9471:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9471:47:30;;:51:::1;:61::i;:::-;9444:13;:89::i;:::-;9543;9557:7;9566:2;9570:61;9622:8;;;;;;;;;;;9570:61;;9584:7;9570:32;;;9611:4;9570:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;9543:89;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;9296:343:30:o;550:22::-;;;;;;:::o;605:21::-;;;;;;:::o;2766:662:28:-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9685:170:30:-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9747:6:::1;::::0;9733:46:::1;::::0;;;;;9773:4:::1;9733:46;::::0;::::1;::::0;;;9725:123:::1;::::0;9747:6:::1;;::::0;9733:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;9747:6;9733:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9733:46:30;9795:6:::1;::::0;9781:46:::1;::::0;;;;;9821:4:::1;9781:46;::::0;::::1;::::0;;;9795:6:::1;::::0;;::::1;::::0;9781:31:::1;::::0;:46;;;;;9733::::1;::::0;9781;;;;;;;;9795:6;9781:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9781:46:30;9829:8:::1;::::0;::::1;::::0;;::::1;::::0;9839;;::::1;;9725:7;:123::i;:::-;1256:1:::0;1245:8;:12;9685:170::o;1503:284::-;507:34;;;;;;;;;;;;;;;;;1630:43;;1619:10;1630:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:55;;;;1584:12;;1598:17;;1619:10;;;1630:43;1619:55;;;1630:43;1619:55;;1630:43;1619:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1583:91;;;;1692:7;:57;;;;-1:-1:-1;1704:11:30;;:16;;:44;;;1735:4;1724:24;;;;;;;;;;;;;;;-1:-1:-1;1724:24:30;1704:44;1684:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:284;;;;;:::o;464:140:37:-;516:6;542;;;:30;;-1:-1:-1;;557:5:37;;;571:1;566;557:5;566:1;552:15;;;;;:20;542:30;534:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:127;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2590:847:30;2701:23;;;;;;:50;;-1:-1:-1;2728:23:30;;;;2701:50;2693:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:18;;2816:23;:15;:23;;;2888:18;;;;;2871:35;;;2943:15;;;;;;:33;;-1:-1:-1;2962:14:30;;;;;2943:33;:51;;;;-1:-1:-1;2980:14:30;;;;;2943:51;2939:332;;;3147:11;3094:64;;3099:44;3133:9;3099:27;3116:9;3099:16;:27::i;:::-;:33;;;;:44::i;:::-;3070:20;:88;;3094:50;;;;;:64;;;;3070:88;;;3196:64;;;3201:44;3235:9;3201:27;3218:9;3201:16;:27::i;:44::-;3172:20;:88;;3196:50;;;;;:64;;;;3172:88;;;2939:332;3280:8;:28;;;;;;;;;;;;3318;;;;;;;;;;;;3356:35;;;;;;;;;;;;3406:24;;;3411:8;;;3406:24;;3421:8;;;;;;;3406:24;;;;;;;;;;;;;;;;;2590:847;;;;;;:::o;1779:166:28:-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;1951:216::-;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;3524:819:30:-;3597:10;3619:13;3653:7;;;;;;;;;;;3635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3635:34:30;3730:5;;3687:19;;;;;;;-1:-1:-1;3635:34:30;;-1:-1:-1;3730:5:30;3760:577;;3789:11;;3785:485;;3820:10;3833:41;3843:30;;:15;;;;:30;;:19;:30::i;3833:41::-;3820:54;;3892:14;3909:17;3919:6;3909:9;:17::i;:::-;3892:34;;3956:9;3948:5;:17;3944:312;;;3989:14;4006:37;4022:20;:5;4032:9;4022;:20::i;:::-;4006:11;;;:15;:37::i;:::-;3989:54;-1:-1:-1;4065:16:30;4084:27;4101:9;4084:12;:5;4094:1;4084:9;:12::i;:::-;:16;;:27::i;:::-;4065:46;;4133:14;4162:11;4150:9;:23;;;;;;;-1:-1:-1;4199:13:30;;4195:42;;4214:23;4220:5;4227:9;4214:5;:23::i;:::-;3944:312;;;;3785:485;;;3760:577;;;4290:11;;4286:51;;4325:1;4317:5;:9;4286:51;3524:819;;;;;;:::o;344:292:36:-;389:6;415:1;411;:5;407:223;;;-1:-1:-1;436:1:36;468;464;460:5;;:9;483:89;494:1;490;:5;483:89;;;519:1;515:5;;556:1;551;547;543;:5;;;;;;:9;542:15;;;;;;538:19;;483:89;;;407:223;;;;592:6;;588:42;;-1:-1:-1;618:1:36;588:42;344:292;;;:::o;1365:197:28:-;1437:11;;:22;;1453:5;1437:15;:22::i;:::-;1423:11;:36;;;1485:13;;;;;:9;:13;;;;;;:24;;1503:5;1485:17;:24::i;:::-;1469:13;;;;;;;:9;:13;;;;;;;;:40;;;;1524:31;;;;;;;1469:13;;;;1524:31;;;;;;;;;;1365:197;;:::o;135:94:36:-;187:6;213:1;209;:5;:13;;221:1;209:13;;;217:1;209:13;205:17;135:94;-1:-1:-1;;;135:94:36:o;1568:205:28:-;1646:15;;;;;;;:9;:15;;;;;;:26;;1666:5;1646:19;:26::i;:::-;1628:15;;;;;;;:9;:15;;;;;:44;;;;1696:11;:22;;1712:5;1696:15;:22::i;:::-;1682:11;:36;;;1733:33;;;;;;;;;;;;;;;;;;;;;;1568:205;;:::o;320:118:38:-;395:10;;268:6;395:17;;320:118::o;506:106::-;566:9;595:10;;;591:14;;;595:10;591:14;;;;;;506:106;-1:-1:-1;;;506:106:38:o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/VenomSwapPairMock.sol\":\"VenomSwapPairMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/mocks/VenomSwapPairMock.sol\":{\"keccak256\":\"0x83513c871d81c3d3e16d21ff5876df27cdbcbe56523058f10ae3cd3fc081b78b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://74d6bfad6b8682c66d9fe26a08d41dd3f5e1385726d1efc2c858fefcc7fb3b5d\",\"dweb:/ipfs/QmTAQnwcBvt8XkuKNqLwkDtgdWiMccGjwC5XwFoDiz9sJY\"]},\"elephantdexcore/contracts/UniswapV2ERC20.sol\":{\"keccak256\":\"0x23fd4ed2f1624e38f9100c119e65b4eaef7e216f069f735a4a373bee49b970c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a745ba8357e0f2fdf05c68610491c09f469fee29c74cf924dac0ddc3b0e1cfc7\",\"dweb:/ipfs/QmRdmbCrhiqwmhj8C4Lb7ZXoJTZEciLPEUvKhvt87n3Bwb\"]},\"elephantdexcore/contracts/UniswapV2Pair.sol\":{\"keccak256\":\"0xfd3327e1172e647fcaa5b2d1f5b6d7c56d40b5ccb693f37e0f5023898364486d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://016a836a09b4693ce37baaf14252c4937461d0b05767c8df86878fd111f4e913\",\"dweb:/ipfs/QmQXAzhsUj3dVVDmC42LatXHKAAuWNgxPQRSkEX9s2xhLa\"]},\"elephantdexcore/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x76866491759a6f069ddc030d52df08d4105a8bcef0e3330dee261cf7ee049b1a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3b2a687415260c33e491cc2d03577729802b5ff8227cc9fd7b45b28cbd24e4\",\"dweb:/ipfs/QmNtBCKh68KLnNj8M2rQDPnbBfKhntzaZ1JReQx4Axtx5w\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":{\"keccak256\":\"0x6bf2e1cd601f8df7a25606a03fb01532f33aa5d77278ef6e7fb72a3b95a2d8d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aaaf7c44351d883b3830e484cc20fe1f91b832aaeb8c4631b1848b6bb08c7661\",\"dweb:/ipfs/QmbxistLwfsuywWLHgBpDcQu4f5j6wV13Vs3JrSd1gjX9N\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/libraries/Math.sol\":{\"keccak256\":\"0x3e0a5520297ed1dc711407fb10e309db409fc8143e19a0a7751aa064bb99dfa1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5d44428171de5cd02c255aebd53d88e78cfee0b877bc1a13bbafa6e83eb0597d\",\"dweb:/ipfs/QmXLVkrxEpA57vgP2CYh26PPGqaFy8C5peKKSdLobfCv31\"]},\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]},\"elephantdexcore/contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc4574ee73aa220d7a8b363ef7c874c099b6007b0f30365993e758c8337a294d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e27c362f1a0f0bf97004bccab2b19faaea0706bc8a21febca6e365de77a20536\",\"dweb:/ipfs/QmZipPjDSok9FxPjMB5rPTuJ7P2VvhaNzHA92TpYvE16FR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a5cceb59cb5307812538300cc35508fc59b49cc621033f5a1b9792d3219208a964736f6c634300060c0033",
      "bin": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a5cceb59cb5307812538300cc35508fc59b49cc621033f5a1b9792d3219208a964736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a5cceb59cb5307812538300cc35508fc59b49cc621033f5a1b9792d3219208a964736f6c634300060c0033",
      "srcmap": "113:91:26:-:0;;;1126:1:30;1102:25;;163:39:26;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;;;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;;;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;2213:7:30;:20;;-1:-1:-1;;;;;;2213:20:30;2223:10;2213:20;;;113:91:26;;;;;;",
      "srcmap-runtime": "113:91:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7375:1875:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7375:1875:30;;-1:-1:-1;7375:1875:30;-1:-1:-1;7375:1875:30;:::i;:::-;;166:49:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1270:227:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144:28;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;578:21:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;313:24:28;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;2302:206:30:-;;;;;;;;;;;;;;;;-1:-1:-1;2302:206:30;;;;;;;;;;;:::i;922:32::-;;;:::i;960:::-;;;:::i;4452:1233::-;;;;;;;;;;;;;;;;-1:-1:-1;4452:1233:30;;;;:::i;343:41:28:-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;998:17:30:-;;;:::i;713:38:28:-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;5794:1472:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5794:1472:30;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;221:45:28;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;403:46:30:-;;;:::i;9296:343::-;;;;;;;;;;;;;;;;-1:-1:-1;9296:343:30;;;;:::i;550:22::-;;;:::i;605:21::-;;;:::i;2766:662:28:-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:61::-;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;9685:170:30:-;;;:::i;7375:1875::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;7488:14;;;;:32:::1;;;7519:1;7506:10;:14;7488:32;7480:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:17;7592::::0;7614:13:::1;:11;:13::i;:::-;7572:55;;;;;7673:9;7660:22;;:10;:22;:48;;;;;7699:9;7686:22;;:10;:22;7660:48;7652:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7886:6;::::0;7920::::1;::::0;7757:13:::1;::::0;;;7886:6:::1;::::0;;::::1;::::0;7920;;::::1;::::0;7944:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;7967:7;7961:13;;:2;:13;;;;7944:30;7936:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8014:14:::0;;8010:58:::1;;8030:38;8044:7;8053:2;8057:10;8030:13;:38::i;:::-;8116:14:::0;;8112:58:::1;;8132:38;8146:7;8155:2;8159:10;8132:13;:38::i;:::-;8218:15:::0;;8214:97:::1;;8252:2;8235:34;;;8270:10;8282;8294;8306:4;;8235:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8214:97;8332:47;::::0;;;;;8373:4:::1;8332:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8332:47:30;8400::::1;::::0;;;;;8441:4:::1;8400:47;::::0;::::1;::::0;;;8332;;-1:-1:-1;8400:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;8332::::1;::::0;8400;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8400:47:30;;-1:-1:-1;8467:14:30::1;::::0;-1:-1:-1;;8495:22:30::1;::::0;::::1;::::0;;::::1;8484:33:::0;::::1;:75;;8558:1;8484:75;;;8544:10;8532:9;:22;;;8520:8;:35;8484:75;8467:92;;8569:14;8609:10;8597:9;:22;;;8586:8;:33;:75;;8660:1;8586:75;;;8646:10;8634:9;:22;;;8622:8;:35;8586:75;8569:92;;8691:1;8679:9;:13;:30;;;;8708:1;8696:9;:13;8679:30;8671:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8834:21;8858:40;8881:16;:9:::0;8895:1:::1;8881:13;:16::i;:::-;8858:18;:8:::0;8871:4:::1;8858:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;8834:64:::0;-1:-1:-1;8908:21:30::1;8932:40;8955:16;:9:::0;8969:1:::1;8955:13;:16::i;8932:40::-;8908:64:::0;-1:-1:-1;9032:43:30::1;9067:7;9032:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;8990:38;:16:::0;9011;8990:20:::1;:38::i;:::-;:85;;8982:110;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1234:1;;9113:49;9121:8;9131;9141:9;9152;9113:7;:49::i;:::-;9177:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;9182:10:::1;::::0;9177:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;;;;;;;;;7375:1875:30:o;166:49:28:-;;;;;;;;;;;;;;;;;;;:::o;1270:227:30:-;1402:8;;;;;;;1432;;;;;;;1472:18;;;;;;1270:227::o;2173:144:28:-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;578:21:30:-;;;;;;:::o;313:24:28:-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;2302:206:30:-;2397:7;;;;2383:10;:21;2375:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:16;;;;;;;;;;;;;;2485:6;:16;;;;;;;;;;;2302:206::o;922:32::-;;;;:::o;960:::-;;;;:::o;4452:1233::-;4501:14;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;4569:13:::1;:11;:13::i;:::-;-1:-1:-1::0;4637:6:30::1;::::0;4623:46:::1;::::0;;;;;4663:4:::1;4623:46;::::0;::::1;::::0;;;4527:55;;-1:-1:-1;4527:55:30;;-1:-1:-1;4607:13:30::1;::::0;4637:6:::1;::::0;;::::1;::::0;4623:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;4637:6;4623:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4623:46:30;4709:6:::1;::::0;4695:46:::1;::::0;;;;;4735:4:::1;4695:46;::::0;::::1;::::0;;;4623;;-1:-1:-1;4679:13:30::1;::::0;4709:6:::1;::::0;;::::1;::::0;4695:31:::1;::::0;:46;;;;;4623::::1;::::0;4695;;;;;;;;4709:6;4695:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4695:46:30;;-1:-1:-1;4751:12:30::1;4766:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4751:38:::0;-1:-1:-1;4799:12:30::1;4814:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4799:38;;4848:10;4861:30;4870:9;4881;4861:8;:30::i;:::-;4901:17;4921:11:::0;4848:43;;-1:-1:-1;5024:17:30;5020:347:::1;;5069:54;444:5;5069:31;5079:20;:7:::0;5091;5079:11:::1;:20::i;:::-;5069:9;:31::i;:54::-;5057:66;;5136:36;5150:1;444:5;5136;:36::i;:::-;5020:347;;;5270:86;5279:37;::::0;::::1;:25;:7:::0;5291:12;5279:11:::1;:25::i;:::-;:37;;;;;;5318;::::0;::::1;:25;:7:::0;5330:12;5318:11:::1;:25::i;:::-;:37;;;;;;5270:8;:86::i;:::-;5258:98;;5020:347;5396:1;5384:9;:13;5376:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:20;5458:2;5462:9;5452:5;:20::i;:::-;5483:49;5491:8;5501;5511:9;5522;5483:7;:49::i;:::-;5546:5;5542:47;;;5580:8;::::0;5561:28:::1;::::0;5580:8:::1;5566::::0;;::::1;::::0;5580;;::::1;;5561:18;:28::i;:::-;5553:5;:36:::0;5542:47:::1;5644:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;5649:10:::1;::::0;5644:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;4452:1233:30;;;-1:-1:-1;;;;;;4452:1233:30:o;343:41:28:-;;;;;;;;;;;;;:::o;998:17:30:-;;;;:::o;713:38:28:-;;;;;;;;;;;;;:::o;5794:1472:30:-;5843:12;5857;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;5923:13:::1;:11;:13::i;:::-;-1:-1:-1::0;5979:6:30::1;::::0;6059::::1;::::0;6137:47:::1;::::0;;;;;6178:4:::1;6137:47;::::0;::::1;::::0;;;5881:55;;-1:-1:-1;5881:55:30;;-1:-1:-1;5979:6:30::1;::::0;;::::1;::::0;6059;::::1;::::0;5961:15:::1;::::0;5979:6;;6137:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;5979:6;6137:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6137:47:30;6210::::1;::::0;;;;;6251:4:::1;6210:47;::::0;::::1;::::0;;;6137;;-1:-1:-1;6194:13:30::1;::::0;6210:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6137::::1;::::0;6210;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6210:47:30;6302:4:::1;6267:14;6284:24:::0;;;:9:::1;6210:47;6284:24:::0;;;;;6210:47;;-1:-1:-1;6332:30:30::1;6341:9:::0;6352;6332:8:::1;:30::i;:::-;6372:17;6392:11:::0;6319:43;;-1:-1:-1;6392:11:30;6501:23:::1;:9:::0;6515:8;6501:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;6633:12:30;6607:23:::1;:9:::0;6621:8;6607:13:::1;:23::i;:::-;:38;;;;;;6597:48;;6721:1;6711:7;:11;:26;;;;;6736:1;6726:7;:11;6711:26;6703:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6792:31;6806:4;6813:9;6792:5;:31::i;:::-;6833:35;6847:7;6856:2;6860:7;6833:13;:35::i;:::-;6878;6892:7;6901:2;6905:7;6878:13;:35::i;:::-;6934:47;::::0;;;;;6975:4:::1;6934:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6934:47:30;7002::::1;::::0;;;;;7043:4:::1;7002:47;::::0;::::1;::::0;;;6934;;-1:-1:-1;7002:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6934::::1;::::0;7002;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;7002:47:30;;-1:-1:-1;7060:49:30::1;7068:8:::0;7002:47;7088:9;7099;7060:7:::1;:49::i;:::-;7123:5;7119:47;;;7157:8;::::0;7138:28:::1;::::0;7157:8:::1;7143::::0;;::::1;::::0;7157;;::::1;;7138:18;:28::i;:::-;7130:5;:36:::0;7119:47:::1;7221:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;7226:10:::1;::::0;7221:38:::1;::::0;;;;;;;;;::::1;1234:1;;;;;;;;;1256::::0;1245:8;:12;;;;5794:1472;;;:::o;221:45:28:-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;403:46:30:-;444:5;403:46;:::o;9296:343::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9364:6:::1;::::0;9413::::1;::::0;9523:8:::1;::::0;9471:47:::1;::::0;;;;;9512:4:::1;9471:47;::::0;::::1;::::0;;;9364:6:::1;::::0;;::::1;::::0;9413;;::::1;::::0;9444:89:::1;::::0;9364:6;;9467:2;;9471:61:::1;::::0;9523:8:::1;;::::0;9364:6;;9471:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;9364:6;9471:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9471:47:30;;:51:::1;:61::i;:::-;9444:13;:89::i;:::-;9543;9557:7;9566:2;9570:61;9622:8;;;;;;;;;;;9570:61;;9584:7;9570:32;;;9611:4;9570:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;9543:89;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;9296:343:30:o;550:22::-;;;;;;:::o;605:21::-;;;;;;:::o;2766:662:28:-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9685:170:30:-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9747:6:::1;::::0;9733:46:::1;::::0;;;;;9773:4:::1;9733:46;::::0;::::1;::::0;;;9725:123:::1;::::0;9747:6:::1;;::::0;9733:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;9747:6;9733:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9733:46:30;9795:6:::1;::::0;9781:46:::1;::::0;;;;;9821:4:::1;9781:46;::::0;::::1;::::0;;;9795:6:::1;::::0;;::::1;::::0;9781:31:::1;::::0;:46;;;;;9733::::1;::::0;9781;;;;;;;;9795:6;9781:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9781:46:30;9829:8:::1;::::0;::::1;::::0;;::::1;::::0;9839;;::::1;;9725:7;:123::i;:::-;1256:1:::0;1245:8;:12;9685:170::o;1503:284::-;507:34;;;;;;;;;;;;;;;;;1630:43;;1619:10;1630:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:55;;;;1584:12;;1598:17;;1619:10;;;1630:43;1619:55;;;1630:43;1619:55;;1630:43;1619:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1583:91;;;;1692:7;:57;;;;-1:-1:-1;1704:11:30;;:16;;:44;;;1735:4;1724:24;;;;;;;;;;;;;;;-1:-1:-1;1724:24:30;1704:44;1684:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:284;;;;;:::o;464:140:37:-;516:6;542;;;:30;;-1:-1:-1;;557:5:37;;;571:1;566;557:5;566:1;552:15;;;;;:20;542:30;534:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:127;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2590:847:30;2701:23;;;;;;:50;;-1:-1:-1;2728:23:30;;;;2701:50;2693:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:18;;2816:23;:15;:23;;;2888:18;;;;;2871:35;;;2943:15;;;;;;:33;;-1:-1:-1;2962:14:30;;;;;2943:33;:51;;;;-1:-1:-1;2980:14:30;;;;;2943:51;2939:332;;;3147:11;3094:64;;3099:44;3133:9;3099:27;3116:9;3099:16;:27::i;:::-;:33;;;;:44::i;:::-;3070:20;:88;;3094:50;;;;;:64;;;;3070:88;;;3196:64;;;3201:44;3235:9;3201:27;3218:9;3201:16;:27::i;:44::-;3172:20;:88;;3196:50;;;;;:64;;;;3172:88;;;2939:332;3280:8;:28;;;;;;;;;;;;3318;;;;;;;;;;;;3356:35;;;;;;;;;;;;3406:24;;;3411:8;;;3406:24;;3421:8;;;;;;;3406:24;;;;;;;;;;;;;;;;;2590:847;;;;;;:::o;1779:166:28:-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;1951:216::-;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;3524:819:30:-;3597:10;3619:13;3653:7;;;;;;;;;;;3635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3635:34:30;3730:5;;3687:19;;;;;;;-1:-1:-1;3635:34:30;;-1:-1:-1;3730:5:30;3760:577;;3789:11;;3785:485;;3820:10;3833:41;3843:30;;:15;;;;:30;;:19;:30::i;3833:41::-;3820:54;;3892:14;3909:17;3919:6;3909:9;:17::i;:::-;3892:34;;3956:9;3948:5;:17;3944:312;;;3989:14;4006:37;4022:20;:5;4032:9;4022;:20::i;:::-;4006:11;;;:15;:37::i;:::-;3989:54;-1:-1:-1;4065:16:30;4084:27;4101:9;4084:12;:5;4094:1;4084:9;:12::i;:::-;:16;;:27::i;:::-;4065:46;;4133:14;4162:11;4150:9;:23;;;;;;;-1:-1:-1;4199:13:30;;4195:42;;4214:23;4220:5;4227:9;4214:5;:23::i;:::-;3944:312;;;;3785:485;;;3760:577;;;4290:11;;4286:51;;4325:1;4317:5;:9;4286:51;3524:819;;;;;;:::o;344:292:36:-;389:6;415:1;411;:5;407:223;;;-1:-1:-1;436:1:36;468;464;460:5;;:9;483:89;494:1;490;:5;483:89;;;519:1;515:5;;556:1;551;547;543;:5;;;;;;:9;542:15;;;;;;538:19;;483:89;;;407:223;;;;592:6;;588:42;;-1:-1:-1;618:1:36;588:42;344:292;;;:::o;1365:197:28:-;1437:11;;:22;;1453:5;1437:15;:22::i;:::-;1423:11;:36;;;1485:13;;;;;:9;:13;;;;;;:24;;1503:5;1485:17;:24::i;:::-;1469:13;;;;;;;:9;:13;;;;;;;;:40;;;;1524:31;;;;;;;1469:13;;;;1524:31;;;;;;;;;;1365:197;;:::o;135:94:36:-;187:6;213:1;209;:5;:13;;221:1;209:13;;;217:1;209:13;205:17;135:94;-1:-1:-1;;;135:94:36:o;1568:205:28:-;1646:15;;;;;;;:9;:15;;;;;;:26;;1666:5;1646:19;:26::i;:::-;1628:15;;;;;;;:9;:15;;;;;:44;;;;1696:11;:22;;1712:5;1696:15;:22::i;:::-;1682:11;:36;;;1733:33;;;;;;;;;;;;;;;;;;;;;;1568:205;;:::o;320:118:38:-;395:10;;268:6;395:17;;320:118::o;506:106::-;566:9;595:10;;;591:14;;;595:10;591:14;;;;;;506:106;-1:-1:-1;;;506:106:38:o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/mocks/WETH9Mock.sol:WETH9Mock": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Withdrawal",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109258061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b50356106e5565b005b34801561025457600080fd5b5061025d6107dc565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b3480156102bf57600080fd5b506100d66107f7565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086f565b610246610883565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108d2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561051557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061058b575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156106675773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156107a2573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061087c338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea26469706673582212208a3b3a4d79898f66ccbd0c7948eecb3ced818cdfa335d80297738f9ad2b3651564736f6c634300060c0033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCD JUMP JUMPDEST POP PUSH2 0xF4 SWAP3 SWAP2 POP PUSH2 0xF8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x925 DUP1 PUSH2 0x11C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x7DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x7F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86F JUMP JUMPDEST PUSH2 0x246 PUSH2 0x883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x515 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x58B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x667 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x763 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87C CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 EXTCODESIZE GASPRICE 0x4D PUSH26 0x898F66CCBD0C7948EECB3CED818CDFA335D80297738F9AD2B365 ISZERO PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "83:36:27:-:0;58:1810;83:36;;58:1810;83:36;;;-1:-1:-1;;;83:36:27;;;;;;-1:-1:-1;;83:36:27;;:::i;:::-;-1:-1:-1;125:29:27;;;;;;;;;;;;;-1:-1:-1;;;125:29:27;;;;;;;;;;;;:::i;:::-;-1:-1:-1;160:26:27;;;-1:-1:-1;;160:26:27;184:2;160:26;;;58:1810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;58:1810:27;;;-1:-1:-1;58:1810:27;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b50356106e5565b005b34801561025457600080fd5b5061025d6107dc565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b3480156102bf57600080fd5b506100d66107f7565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086f565b610246610883565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108d2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561051557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061058b575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156106675773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156107a2573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061087c338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea26469706673582212208a3b3a4d79898f66ccbd0c7948eecb3ced818cdfa335d80297738f9ad2b3651564736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x7DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x7F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86F JUMP JUMPDEST PUSH2 0x246 PUSH2 0x883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x515 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x58B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x667 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x763 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57455448393A204572726F720000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87C CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 EXTCODESIZE GASPRICE 0x4D PUSH26 0x898F66CCBD0C7948EECB3CED818CDFA335D80297738F9AD2B365 ISZERO PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "58:1810:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:180;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1042:180:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;938:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1358:508;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1358:508:27;;;;;;;;;;;;;;;;;;:::i;710:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:222:27;;:::i;:::-;;160:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;453:44;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;453:44:27;;;;:::i;125:29::-;;;;;;;;;;;;;:::i;1228:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:124:27;;;;;;;;;:::i;574:130::-;;;:::i;503:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;503:64:27;;;;;;;;;;;:::i;83:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1042:180::-;1127:10;1101:4;1117:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1164:30;;;;;;;1101:4;;1117:26;;1127:10;;1164:30;;;;;;;;-1:-1:-1;1211:4:27;1042:180;;;;:::o;938:98::-;1008:21;938:98;:::o;1358:508::-;1489:14;;;1465:4;1489:14;;;:9;:14;;;;;;:21;-1:-1:-1;1489:21:27;1481:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:17;;;1549:10;1542:17;;;;:62;;-1:-1:-1;1563:14:27;;;;;;;:9;:14;;;;;;;;1578:10;1563:26;;;;;;;;1601:2;1563:41;;1542:62;1538:198;;;1628:14;;;;;;;:9;:14;;;;;;;;1643:10;1628:26;;;;;;;;:33;-1:-1:-1;1628:33:27;1620:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:14;;;;;;;:9;:14;;;;;;;;1707:10;1692:26;;;;;;;:33;;;;;;;1538:198;1746:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1777:14;;;;;;;;;;:21;;;;;;1814:23;;;;;;;1777:14;;1814:23;;;;;;;;;;;-1:-1:-1;1855:4:27;1358:508;;;;;:::o;710:222::-;776:10;766:21;;;;:9;:21;;;;;;:28;-1:-1:-1;766:28:27;758:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:10;821:21;;;;:9;:21;;;;;;:28;;;;;;;859:24;;;;;;846:3;;859:24;;821:21;859:24;846:3;831:10;859:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:27:27;;;;;;;;909:10;;898:27;;;;;;;;;;710:222;:::o;160:26::-;;;;;;:::o;453:44::-;;;;;;;;;;;;;:::o;125:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1228:124;1288:4;1311:34;1324:10;1336:3;1341;1311:12;:34::i;:::-;1304:41;1228:124;-1:-1:-1;;;1228:124:27:o;574:130::-;628:10;618:21;;;;:9;:21;;;;;;;;;:34;;643:9;618:34;;;;;;667:30;;;;;;;;;;;;;;;;;574:130::o;503:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/WETH9Mock.sol\":\"WETH9Mock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/mocks/WETH9Mock.sol\":{\"keccak256\":\"0x1c7b6c5c9866f6929e2bed1ec5a8877f25b1a611eba191a072399180062abf7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6fbcd4ea8ac6cff3c17149cecd3fd4f13250ab567e0d8ab49570eb6f2454fe0c\",\"dweb:/ipfs/QmPesBTxL7omAf6AacDm2ZQuDyXGyRFco7WC6EawF8pxjU\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Withdrawal",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109258061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b50356106e5565b005b34801561025457600080fd5b5061025d6107dc565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b3480156102bf57600080fd5b506100d66107f7565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086f565b610246610883565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108d2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561051557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061058b575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156106675773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156107a2573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061087c338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea26469706673582212208a3b3a4d79898f66ccbd0c7948eecb3ced818cdfa335d80297738f9ad2b3651564736f6c634300060c0033",
      "bin": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109258061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b50356106e5565b005b34801561025457600080fd5b5061025d6107dc565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b3480156102bf57600080fd5b506100d66107f7565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086f565b610246610883565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108d2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561051557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061058b575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156106675773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156107a2573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061087c338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea26469706673582212208a3b3a4d79898f66ccbd0c7948eecb3ced818cdfa335d80297738f9ad2b3651564736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b50356106e5565b005b34801561025457600080fd5b5061025d6107dc565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b3480156102bf57600080fd5b506100d66107f7565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086f565b610246610883565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108d2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561051557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061058b575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156106675773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57455448393a204572726f720000000000000000000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156107a2573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061087c338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea26469706673582212208a3b3a4d79898f66ccbd0c7948eecb3ced818cdfa335d80297738f9ad2b3651564736f6c634300060c0033",
      "srcmap": "83:36:27:-:0;58:1810;83:36;;58:1810;83:36;;;-1:-1:-1;;;83:36:27;;;;;;-1:-1:-1;;83:36:27;;:::i;:::-;-1:-1:-1;125:29:27;;;;;;;;;;;;;-1:-1:-1;;;125:29:27;;;;;;;;;;;;:::i;:::-;-1:-1:-1;160:26:27;;;-1:-1:-1;;160:26:27;184:2;160:26;;;58:1810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;58:1810:27;;;-1:-1:-1;58:1810:27;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "58:1810:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:180;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1042:180:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;938:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1358:508;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1358:508:27;;;;;;;;;;;;;;;;;;:::i;710:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:222:27;;:::i;:::-;;160:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;453:44;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;453:44:27;;;;:::i;125:29::-;;;;;;;;;;;;;:::i;1228:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:124:27;;;;;;;;;:::i;574:130::-;;;:::i;503:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;503:64:27;;;;;;;;;;;:::i;83:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1042:180::-;1127:10;1101:4;1117:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1164:30;;;;;;;1101:4;;1117:26;;1127:10;;1164:30;;;;;;;;-1:-1:-1;1211:4:27;1042:180;;;;:::o;938:98::-;1008:21;938:98;:::o;1358:508::-;1489:14;;;1465:4;1489:14;;;:9;:14;;;;;;:21;-1:-1:-1;1489:21:27;1481:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:17;;;1549:10;1542:17;;;;:62;;-1:-1:-1;1563:14:27;;;;;;;:9;:14;;;;;;;;1578:10;1563:26;;;;;;;;1601:2;1563:41;;1542:62;1538:198;;;1628:14;;;;;;;:9;:14;;;;;;;;1643:10;1628:26;;;;;;;;:33;-1:-1:-1;1628:33:27;1620:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:14;;;;;;;:9;:14;;;;;;;;1707:10;1692:26;;;;;;;:33;;;;;;;1538:198;1746:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1777:14;;;;;;;;;;:21;;;;;;1814:23;;;;;;;1777:14;;1814:23;;;;;;;;;;;-1:-1:-1;1855:4:27;1358:508;;;;;:::o;710:222::-;776:10;766:21;;;;:9;:21;;;;;;:28;-1:-1:-1;766:28:27;758:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:10;821:21;;;;:9;:21;;;;;;:28;;;;;;;859:24;;;;;;846:3;;859:24;;821:21;859:24;846:3;831:10;859:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:27:27;;;;;;;;909:10;;898:27;;;;;;;;;;710:222;:::o;160:26::-;;;;;;:::o;453:44::-;;;;;;;;;;;;;:::o;125:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1228:124;1288:4;1311:34;1324:10;1336:3;1341;1311:12;:34::i;:::-;1304:41;1228:124;-1:-1:-1;;;1228:124:27:o;574:130::-;628:10;618:21;;;;:9;:21;;;;;;;;;:34;;643:9;618:34;;;;;;667:30;;;;;;;;;;;;;;;;;574:130::o;503:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
    },
    "elephantdexcore/contracts/UniswapV2ERC20.sol:UniswapV2ERC20": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100f86000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212209a3f2aa90c0771b04e21df0d1a8464f6235d869ef5e8252e25e5fa75ad3756bc64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH2 0xA8A DUP1 PUSH2 0xF8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x82C JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x82C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x93D SWAP1 DUP3 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x979 SWAP1 DUP3 PUSH2 0x9E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 EXTCODEHASH 0x2A 0xA9 0xC SMOD PUSH18 0xB04E21DF0D1A8464F6235D869EF5E8252E25 0xE5 STATICCALL PUSH22 0xAD3756BC64736F6C634300060C003300000000000000 ",
          "sourceMap": "99:3331:28:-:0;;;913:446;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;;;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;;;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;99:3331;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212209a3f2aa90c0771b04e21df0d1a8464f6235d869ef5e8252e25e5fa75ad3756bc64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x82C JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x82C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x93D SWAP1 DUP3 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x979 SWAP1 DUP3 PUSH2 0x9E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 EXTCODEHASH 0x2A 0xA9 0xC SMOD PUSH18 0xB04E21DF0D1A8464F6235D869EF5E8252E25 0xE5 STATICCALL PUSH22 0xAD3756BC64736F6C634300060C003300000000000000 ",
          "sourceMap": "99:3331:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;166:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;313:24;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;343:41::-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;713:38::-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;221:45::-;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;2766:662::-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;390:61;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;166:49::-;;;;;;;;;;;;;;;;;;;:::o;2173:144::-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;313:24::-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;343:41::-;;;;;;;;;;;;;:::o;713:38::-;;;;;;;;;;;;;:::o;221:45::-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;2766:662::-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1779:166::-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;331:127:37:-;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:216:28;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/UniswapV2ERC20.sol\":\"UniswapV2ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/UniswapV2ERC20.sol\":{\"keccak256\":\"0x23fd4ed2f1624e38f9100c119e65b4eaef7e216f069f735a4a373bee49b970c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a745ba8357e0f2fdf05c68610491c09f469fee29c74cf924dac0ddc3b0e1cfc7\",\"dweb:/ipfs/QmRdmbCrhiqwmhj8C4Lb7ZXoJTZEciLPEUvKhvt87n3Bwb\"]},\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100f86000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212209a3f2aa90c0771b04e21df0d1a8464f6235d869ef5e8252e25e5fa75ad3756bc64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100f86000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212209a3f2aa90c0771b04e21df0d1a8464f6235d869ef5e8252e25e5fa75ad3756bc64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212209a3f2aa90c0771b04e21df0d1a8464f6235d869ef5e8252e25e5fa75ad3756bc64736f6c634300060c0033",
      "srcmap": "99:3331:28:-:0;;;913:446;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;;;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;;;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;99:3331;;;;;;",
      "srcmap-runtime": "99:3331:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;166:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;313:24;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;343:41::-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;713:38::-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;221:45::-;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;2766:662::-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;390:61;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;166:49::-;;;;;;;;;;;;;;;;;;;:::o;2173:144::-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;313:24::-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;343:41::-;;;;;;;;;;;;;:::o;713:38::-;;;;;;;;;;;;;:::o;221:45::-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;2766:662::-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1779:166::-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;331:127:37:-;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:216:28;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "elephantdexcore/contracts/UniswapV2Factory.sol:UniswapV2Factory": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220380b355045fe3b02f536c3fdda11d2d1b8ef164e31794251cac6e240e4f6f7c764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x35A9 CODESIZE SUB DUP1 PUSH2 0x35A9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3546 DUP1 PUSH2 0x63 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AAB9248 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC9C65396 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x1CB JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9AAB9248 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x120 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x236 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x36F JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x243 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x282 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x328 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x449 JUMPI DUP4 DUP6 PUSH2 0x44C JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x574 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x586 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP SWAP1 POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x485CC955 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x85C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2C60 DUP1 PUSH2 0x8B1 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C0033A2646970667358221220380B355045FE EXTCODESIZE MUL CREATE2 CALLDATASIZE 0xC3 REVERT 0xDA GT 0xD2 0xD1 0xB8 0xEF AND 0x4E BALANCE PUSH26 0x4251CAC6E240E4F6F7C764736F6C634300060C00330000000000 ",
          "sourceMap": "139:1965:29:-:0;;;479:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;479:84:29;530:11;:26;;-1:-1:-1;;;;;;530:26:29;-1:-1:-1;;;;;530:26:29;;;;;;;;;139:1965;;;-1:-1:-1;139:1965:29;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220380b355045fe3b02f536c3fdda11d2d1b8ef164e31794251cac6e240e4f6f7c764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AAB9248 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC9C65396 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x1CB JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9AAB9248 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x120 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x236 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x36F JUMP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x243 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x282 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x328 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x40C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x449 JUMPI DUP4 DUP6 PUSH2 0x44C JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x574 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x586 SWAP1 PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP SWAP1 POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x485CC955 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x85C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2C60 DUP1 PUSH2 0x8B1 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C0033A2646970667358221220380B355045FE EXTCODESIZE MUL CREATE2 CALLDATASIZE 0xC3 REVERT 0xDA GT 0xD2 0xD1 0xB8 0xEF AND 0x4E BALANCE PUSH26 0x4251CAC6E240E4F6F7C764736F6C634300060C00330000000000 ",
          "sourceMap": "139:1965:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;227:35;;;:::i;346:34::-;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;;:::i;569:103::-;;;:::i;:::-;;;;;;;;;;;;;;;;678:123;;;:::i;1926:175::-;;;;;;;;;;;;;;;;-1:-1:-1;1926:175:29;;;;:::i;:::-;;807:956;;;;;;;;;;;;;;;;-1:-1:-1;807:956:29;;;;;;;;;;;:::i;269:71::-;;;;;;;;;;;;;;;;-1:-1:-1;269:71:29;;;;;;;;;;;:::i;1769:151::-;;;;;;;;;;;;;;;;-1:-1:-1;1769:151:29;;;;:::i;192:29::-;;;;;;:::o;227:35::-;;;;;;:::o;346:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;:::o;569:103::-;650:8;:15;569:103;:::o;678:123::-;725:7;761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;751:43;;;;;;744:50;;678:123;:::o;1926:175::-;2022:11;;;;2008:10;:25;2000:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2068:11;:26;;;;;;;;;;;;;;;1926:175::o;807:956::-;886:12;928:6;918:16;;:6;:16;;;;910:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:14;996;1023:6;1014:15;;:6;:15;;;:53;;1052:6;1060;1014:53;;;1033:6;1041;1014:53;979:88;;-1:-1:-1;979:88:29;-1:-1:-1;1085:20:29;;;1077:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:37;:15;;;1186:1;1151:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;1143:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1255:21;1279:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1255:56;;1321:12;1363:6;1371;1346:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:43;;;;;;1321:58;;1467:4;1456:8;1450:15;1445:2;1435:8;1431:17;1428:1;1420:52;1412:60;;1505:4;1491:30;;;1522:6;1530;1491:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1547:15:29;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;1587:15;;;;;;:23;;;;;;;;:30;;;;;;;;1672:8;:19;;-1:-1:-1;1672:19:29;;;;;;;;;;;;;;;;;;;;;;1740:15;;1706:50;;;;;;;;;;;;;;;;;;;;;;807:956;;;;;;;;:::o;269:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1769:151::-;1853:11;;;;1839:10;:25;1831:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:5;:14;;;;;;;;;;;;;;;1769:151::o;-1:-1:-1:-;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/UniswapV2Factory.sol\":\"UniswapV2Factory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/UniswapV2ERC20.sol\":{\"keccak256\":\"0x23fd4ed2f1624e38f9100c119e65b4eaef7e216f069f735a4a373bee49b970c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a745ba8357e0f2fdf05c68610491c09f469fee29c74cf924dac0ddc3b0e1cfc7\",\"dweb:/ipfs/QmRdmbCrhiqwmhj8C4Lb7ZXoJTZEciLPEUvKhvt87n3Bwb\"]},\"elephantdexcore/contracts/UniswapV2Factory.sol\":{\"keccak256\":\"0xe1ed816918c38ac334da846a8592176081e9d9139e77c9efd1404dad91f5df38\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3fee6a171f1516da426eaef137c89370619b6325a6b2ce5741eb1f45541062fb\",\"dweb:/ipfs/QmdusYSPBVWbpAW3NXCwz62rqxvKdcNLykjBnCwSTPb8UC\"]},\"elephantdexcore/contracts/UniswapV2Pair.sol\":{\"keccak256\":\"0xfd3327e1172e647fcaa5b2d1f5b6d7c56d40b5ccb693f37e0f5023898364486d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://016a836a09b4693ce37baaf14252c4937461d0b05767c8df86878fd111f4e913\",\"dweb:/ipfs/QmQXAzhsUj3dVVDmC42LatXHKAAuWNgxPQRSkEX9s2xhLa\"]},\"elephantdexcore/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x76866491759a6f069ddc030d52df08d4105a8bcef0e3330dee261cf7ee049b1a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3b2a687415260c33e491cc2d03577729802b5ff8227cc9fd7b45b28cbd24e4\",\"dweb:/ipfs/QmNtBCKh68KLnNj8M2rQDPnbBfKhntzaZ1JReQx4Axtx5w\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":{\"keccak256\":\"0x6bf2e1cd601f8df7a25606a03fb01532f33aa5d77278ef6e7fb72a3b95a2d8d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aaaf7c44351d883b3830e484cc20fe1f91b832aaeb8c4631b1848b6bb08c7661\",\"dweb:/ipfs/QmbxistLwfsuywWLHgBpDcQu4f5j6wV13Vs3JrSd1gjX9N\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/libraries/Math.sol\":{\"keccak256\":\"0x3e0a5520297ed1dc711407fb10e309db409fc8143e19a0a7751aa064bb99dfa1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5d44428171de5cd02c255aebd53d88e78cfee0b877bc1a13bbafa6e83eb0597d\",\"dweb:/ipfs/QmXLVkrxEpA57vgP2CYh26PPGqaFy8C5peKKSdLobfCv31\"]},\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]},\"elephantdexcore/contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc4574ee73aa220d7a8b363ef7c874c099b6007b0f30365993e758c8337a294d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e27c362f1a0f0bf97004bccab2b19faaea0706bc8a21febca6e365de77a20536\",\"dweb:/ipfs/QmZipPjDSok9FxPjMB5rPTuJ7P2VvhaNzHA92TpYvE16FR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220380b355045fe3b02f536c3fdda11d2d1b8ef164e31794251cac6e240e4f6f7c764736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506040516135a93803806135a98339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613546806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220380b355045fe3b02f536c3fdda11d2d1b8ef164e31794251cac6e240e4f6f7c764736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610155578063e6a4390514610190578063f46901ed146101cb576100a3565b80639aab924814610118578063a2e74af614610120576100a3565b8063017e7e58146100a8578063094b7415146100d95780631e3dd18b146100e1578063574f2ba3146100fe575b600080fd5b6100b06101fe565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b061021a565b6100b0600480360360208110156100f757600080fd5b5035610236565b61010661026a565b60408051918252519081900360200190f35b610106610270565b6101536004803603602081101561013657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a2565b005b6100b06004803603604081101561016b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661036f565b6100b0600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a3565b610153600480360360208110156101e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107d6565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061024357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b600060405180602001610282906108a3565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561040c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061044957838561044c565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561057457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b606060405180602001610586906108a3565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461085c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c60806108b18339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033a2646970667358221220380b355045fe3b02f536c3fdda11d2d1b8ef164e31794251cac6e240e4f6f7c764736f6c634300060c0033",
      "srcmap": "139:1965:29:-:0;;;479:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;479:84:29;530:11;:26;;-1:-1:-1;;;;;;530:26:29;-1:-1:-1;;;;;530:26:29;;;;;;;;;139:1965;;;-1:-1:-1;139:1965:29;;",
      "srcmap-runtime": "139:1965:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;227:35;;;:::i;346:34::-;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;;:::i;569:103::-;;;:::i;:::-;;;;;;;;;;;;;;;;678:123;;;:::i;1926:175::-;;;;;;;;;;;;;;;;-1:-1:-1;1926:175:29;;;;:::i;:::-;;807:956;;;;;;;;;;;;;;;;-1:-1:-1;807:956:29;;;;;;;;;;;:::i;269:71::-;;;;;;;;;;;;;;;;-1:-1:-1;269:71:29;;;;;;;;;;;:::i;1769:151::-;;;;;;;;;;;;;;;;-1:-1:-1;1769:151:29;;;;:::i;192:29::-;;;;;;:::o;227:35::-;;;;;;:::o;346:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;346:34:29;:::o;569:103::-;650:8;:15;569:103;:::o;678:123::-;725:7;761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;751:43;;;;;;744:50;;678:123;:::o;1926:175::-;2022:11;;;;2008:10;:25;2000:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2068:11;:26;;;;;;;;;;;;;;;1926:175::o;807:956::-;886:12;928:6;918:16;;:6;:16;;;;910:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:14;996;1023:6;1014:15;;:6;:15;;;:53;;1052:6;1060;1014:53;;;1033:6;1041;1014:53;979:88;;-1:-1:-1;979:88:29;-1:-1:-1;1085:20:29;;;1077:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:37;:15;;;1186:1;1151:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;1143:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1255:21;1279:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1255:56;;1321:12;1363:6;1371;1346:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:43;;;;;;1321:58;;1467:4;1456:8;1450:15;1445:2;1435:8;1431:17;1428:1;1420:52;1412:60;;1505:4;1491:30;;;1522:6;1530;1491:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1547:15:29;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;1587:15;;;;;;:23;;;;;;;;:30;;;;;;;;1672:8;:19;;-1:-1:-1;1672:19:29;;;;;;;;;;;;;;;;;;;;;;1740:15;;1706:50;;;;;;;;;;;;;;;;;;;;;;807:956;;;;;;;;:::o;269:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1769:151::-;1853:11;;;;1839:10;:25;1831:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:5;:14;;;;;;;;;;;;;;;1769:151::o;-1:-1:-1:-;;;;;;;;:::o"
    },
    "elephantdexcore/contracts/UniswapV2Pair.sol:UniswapV2Pair": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH17 0x22B632B83430B73A102628102A37B5B2B7 PUSH1 0x79 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x94B79270310AFF7A2B23E7C4FAE2666AA30E675FD17C1E902E95E035A6710C23 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2B51 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C003300000000000000000000000000000000 ",
          "sourceMap": "285:9572:30:-:0;;;1126:1;1102:25;;2182:58;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;2213:7:30;:20;;-1:-1:-1;2213:20:30;2223:10;2213:20;;;-1:-1:-1;;285:9572:30;-1:-1:-1;285:9572:30;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x67B JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x55E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4CF JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x461 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3F8 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x393 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x683 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x261 PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x29B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2C8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDA5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDDE JUMP JUMPDEST PUSH2 0x39B PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x400 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFBF JUMP JUMPDEST PUSH2 0x39B PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1361 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x1373 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x53D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x138B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x1816 JUMP JUMPDEST PUSH2 0x34E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x184F JUMP JUMPDEST PUSH2 0x39B PUSH2 0x185C JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x36A PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1A87 JUMP JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x257 PUSH2 0x1D70 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x707 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x75C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A62 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x767 PUSH2 0xD50 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x79A JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AAB PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x854 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x8BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP3 DUP11 DUP14 PUSH2 0x1F56 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x8E1 JUMPI PUSH2 0x8E1 DUP2 DUP11 DUP13 PUSH2 0x1F56 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x9AD JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0xB09 JUMPI PUSH1 0x0 PUSH2 0xB1F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xB43 JUMPI PUSH1 0x0 PUSH2 0xB59 JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xB6A JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A87 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBE1 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xBDB DUP8 PUSH2 0x3E8 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF3 PUSH2 0xBCF DUP5 PUSH1 0x3 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH2 0xC1F PUSH3 0xF4240 PUSH2 0xC19 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 PUSH2 0x2163 JUMP JUMPDEST LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xCA4 DUP5 DUP5 DUP9 DUP9 PUSH2 0x225B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x456C657068616E74204C5020546F6B656E000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2511 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEA2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xE70 SWAP1 DUP4 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xEAD DUP5 DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x103E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x104E PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x11B5 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11D3 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x21E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11E1 DUP8 DUP8 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1218 JUMPI PUSH2 0x1204 PUSH2 0x3E8 PUSH2 0xBDB PUSH2 0x11FF DUP8 DUP8 PUSH2 0x2163 JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST SWAP9 POP PUSH2 0x1213 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST PUSH2 0x1266 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1236 DUP7 DUP5 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x123D JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1259 DUP7 DUP6 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1260 JUMPI INVALID JUMPDEST DIV PUSH2 0x28B9 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x12C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2AF4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CC DUP11 DUP11 PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x12D8 DUP7 DUP7 DUP11 DUP11 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1310 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0x140F PUSH2 0xD50 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x152F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1578 DUP9 DUP9 PUSH2 0x2655 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1589 DUP5 DUP8 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x1590 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x159E DUP5 DUP7 PUSH2 0x2163 JUMP JUMPDEST DUP2 PUSH2 0x15A5 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x15B8 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2ACC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1617 ADDRESS DUP5 PUSH2 0x28D1 JUMP JUMPDEST PUSH2 0x1622 DUP8 DUP14 DUP14 PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x162D DUP7 DUP14 DUP13 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x176F DUP6 DUP6 DUP12 DUP12 PUSH2 0x225B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x17AB JUMPI PUSH1 0x8 SLOAD PUSH2 0x17A7 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x2163 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x454C455048414E542D4C50000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB2 CALLER DUP5 DUP5 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x18D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x19A9 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x19A4 SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x1F56 JUMP JUMPDEST PUSH2 0x1A45 DUP2 DUP5 PUSH2 0x19A4 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1AF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CD2 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D48 DUP10 DUP10 DUP10 PUSH2 0x2511 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1F4F SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x225B JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x205C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x201F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x20F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x20F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x215C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x217E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x217B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2287 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x22F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2342 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x235D JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2407 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x239A DUP6 PUSH2 0x2376 DUP7 PUSH2 0x298A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x23DA DUP5 PUSH2 0x2376 DUP8 PUSH2 0x298A JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x25B0 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x25EC SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x27AF JUMPI DUP1 ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 PUSH2 0x273B PUSH2 0x11FF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2748 DUP4 PUSH2 0x27C3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x0 PUSH2 0x276A PUSH2 0x2761 DUP5 DUP5 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x2163 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2783 DUP4 PUSH2 0x277D DUP7 PUSH1 0x2 PUSH2 0x2163 JUMP JUMPDEST SWAP1 PUSH2 0x29EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x2790 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH2 0x27A3 DUP8 DUP3 PUSH2 0x2815 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27BB JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x2806 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x27EF JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x27F8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST POP PUSH2 0x2810 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2810 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2822 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2854 SWAP1 DUP3 PUSH2 0x29EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x28C8 JUMPI DUP2 PUSH2 0x28CA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2901 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2935 SWAP1 DUP3 PUSH2 0x21E9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x29E7 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xDB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xC5 0xD5 PUSH16 0x7047DEB6B3B23DE79FD12F46EC74C81E SWAP11 SWAP7 SWAP2 DUP7 0xD2 MOD SWAP10 0x2C PUSH30 0x40754A64736F6C634300060C003300000000000000000000000000000000 ",
          "sourceMap": "285:9572:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7375:1875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7375:1875:30;;-1:-1:-1;7375:1875:30;-1:-1:-1;7375:1875:30;:::i;:::-;;166:49:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1270:227:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144:28;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;578:21:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;313:24:28;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;2302:206:30:-;;;;;;;;;;;;;;;;-1:-1:-1;2302:206:30;;;;;;;;;;;:::i;922:32::-;;;:::i;960:::-;;;:::i;4452:1233::-;;;;;;;;;;;;;;;;-1:-1:-1;4452:1233:30;;;;:::i;343:41:28:-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;998:17:30:-;;;:::i;713:38:28:-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;5794:1472:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5794:1472:30;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;221:45:28;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;403:46:30:-;;;:::i;9296:343::-;;;;;;;;;;;;;;;;-1:-1:-1;9296:343:30;;;;:::i;550:22::-;;;:::i;605:21::-;;;:::i;2766:662:28:-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:61::-;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;9685:170:30:-;;;:::i;7375:1875::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;7488:14;;;;:32:::1;;;7519:1;7506:10;:14;7488:32;7480:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:17;7592::::0;7614:13:::1;:11;:13::i;:::-;7572:55;;;;;7673:9;7660:22;;:10;:22;:48;;;;;7699:9;7686:22;;:10;:22;7660:48;7652:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7886:6;::::0;7920::::1;::::0;7757:13:::1;::::0;;;7886:6:::1;::::0;;::::1;::::0;7920;;::::1;::::0;7944:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;7967:7;7961:13;;:2;:13;;;;7944:30;7936:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8014:14:::0;;8010:58:::1;;8030:38;8044:7;8053:2;8057:10;8030:13;:38::i;:::-;8116:14:::0;;8112:58:::1;;8132:38;8146:7;8155:2;8159:10;8132:13;:38::i;:::-;8218:15:::0;;8214:97:::1;;8252:2;8235:34;;;8270:10;8282;8294;8306:4;;8235:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8214:97;8332:47;::::0;;;;;8373:4:::1;8332:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8332:47:30;8400::::1;::::0;;;;;8441:4:::1;8400:47;::::0;::::1;::::0;;;8332;;-1:-1:-1;8400:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;8332::::1;::::0;8400;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8400:47:30;;-1:-1:-1;8467:14:30::1;::::0;-1:-1:-1;;8495:22:30::1;::::0;::::1;::::0;;::::1;8484:33:::0;::::1;:75;;8558:1;8484:75;;;8544:10;8532:9;:22;;;8520:8;:35;8484:75;8467:92;;8569:14;8609:10;8597:9;:22;;;8586:8;:33;:75;;8660:1;8586:75;;;8646:10;8634:9;:22;;;8622:8;:35;8586:75;8569:92;;8691:1;8679:9;:13;:30;;;;8708:1;8696:9;:13;8679:30;8671:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8834:21;8858:40;8881:16;:9:::0;8895:1:::1;8881:13;:16::i;:::-;8858:18;:8:::0;8871:4:::1;8858:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;8834:64:::0;-1:-1:-1;8908:21:30::1;8932:40;8955:16;:9:::0;8969:1:::1;8955:13;:16::i;8932:40::-;8908:64:::0;-1:-1:-1;9032:43:30::1;9067:7;9032:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;8990:38;:16:::0;9011;8990:20:::1;:38::i;:::-;:85;;8982:110;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1234:1;;9113:49;9121:8;9131;9141:9;9152;9113:7;:49::i;:::-;9177:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;9182:10:::1;::::0;9177:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;;;;;;;;;7375:1875:30:o;166:49:28:-;;;;;;;;;;;;;;;;;;;:::o;1270:227:30:-;1402:8;;;;;;;1432;;;;;;;1472:18;;;;;;1270:227::o;2173:144:28:-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;578:21:30:-;;;;;;:::o;313:24:28:-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;2302:206:30:-;2397:7;;;;2383:10;:21;2375:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:16;;;;;;;;;;;;;;2485:6;:16;;;;;;;;;;;2302:206::o;922:32::-;;;;:::o;960:::-;;;;:::o;4452:1233::-;4501:14;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;4569:13:::1;:11;:13::i;:::-;-1:-1:-1::0;4637:6:30::1;::::0;4623:46:::1;::::0;;;;;4663:4:::1;4623:46;::::0;::::1;::::0;;;4527:55;;-1:-1:-1;4527:55:30;;-1:-1:-1;4607:13:30::1;::::0;4637:6:::1;::::0;;::::1;::::0;4623:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;4637:6;4623:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4623:46:30;4709:6:::1;::::0;4695:46:::1;::::0;;;;;4735:4:::1;4695:46;::::0;::::1;::::0;;;4623;;-1:-1:-1;4679:13:30::1;::::0;4709:6:::1;::::0;;::::1;::::0;4695:31:::1;::::0;:46;;;;;4623::::1;::::0;4695;;;;;;;;4709:6;4695:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4695:46:30;;-1:-1:-1;4751:12:30::1;4766:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4751:38:::0;-1:-1:-1;4799:12:30::1;4814:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4799:38;;4848:10;4861:30;4870:9;4881;4861:8;:30::i;:::-;4901:17;4921:11:::0;4848:43;;-1:-1:-1;5024:17:30;5020:347:::1;;5069:54;444:5;5069:31;5079:20;:7:::0;5091;5079:11:::1;:20::i;:::-;5069:9;:31::i;:54::-;5057:66;;5136:36;5150:1;444:5;5136;:36::i;:::-;5020:347;;;5270:86;5279:37;::::0;::::1;:25;:7:::0;5291:12;5279:11:::1;:25::i;:::-;:37;;;;;;5318;::::0;::::1;:25;:7:::0;5330:12;5318:11:::1;:25::i;:::-;:37;;;;;;5270:8;:86::i;:::-;5258:98;;5020:347;5396:1;5384:9;:13;5376:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:20;5458:2;5462:9;5452:5;:20::i;:::-;5483:49;5491:8;5501;5511:9;5522;5483:7;:49::i;:::-;5546:5;5542:47;;;5580:8;::::0;5561:28:::1;::::0;5580:8:::1;5566::::0;;::::1;::::0;5580;;::::1;;5561:18;:28::i;:::-;5553:5;:36:::0;5542:47:::1;5644:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;5649:10:::1;::::0;5644:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;4452:1233:30;;;-1:-1:-1;;;;;;4452:1233:30:o;343:41:28:-;;;;;;;;;;;;;:::o;998:17:30:-;;;;:::o;713:38:28:-;;;;;;;;;;;;;:::o;5794:1472:30:-;5843:12;5857;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;5923:13:::1;:11;:13::i;:::-;-1:-1:-1::0;5979:6:30::1;::::0;6059::::1;::::0;6137:47:::1;::::0;;;;;6178:4:::1;6137:47;::::0;::::1;::::0;;;5881:55;;-1:-1:-1;5881:55:30;;-1:-1:-1;5979:6:30::1;::::0;;::::1;::::0;6059;::::1;::::0;5961:15:::1;::::0;5979:6;;6137:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;5979:6;6137:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6137:47:30;6210::::1;::::0;;;;;6251:4:::1;6210:47;::::0;::::1;::::0;;;6137;;-1:-1:-1;6194:13:30::1;::::0;6210:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6137::::1;::::0;6210;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6210:47:30;6302:4:::1;6267:14;6284:24:::0;;;:9:::1;6210:47;6284:24:::0;;;;;6210:47;;-1:-1:-1;6332:30:30::1;6341:9:::0;6352;6332:8:::1;:30::i;:::-;6372:17;6392:11:::0;6319:43;;-1:-1:-1;6392:11:30;6501:23:::1;:9:::0;6515:8;6501:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;6633:12:30;6607:23:::1;:9:::0;6621:8;6607:13:::1;:23::i;:::-;:38;;;;;;6597:48;;6721:1;6711:7;:11;:26;;;;;6736:1;6726:7;:11;6711:26;6703:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6792:31;6806:4;6813:9;6792:5;:31::i;:::-;6833:35;6847:7;6856:2;6860:7;6833:13;:35::i;:::-;6878;6892:7;6901:2;6905:7;6878:13;:35::i;:::-;6934:47;::::0;;;;;6975:4:::1;6934:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6934:47:30;7002::::1;::::0;;;;;7043:4:::1;7002:47;::::0;::::1;::::0;;;6934;;-1:-1:-1;7002:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6934::::1;::::0;7002;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;7002:47:30;;-1:-1:-1;7060:49:30::1;7068:8:::0;7002:47;7088:9;7099;7060:7:::1;:49::i;:::-;7123:5;7119:47;;;7157:8;::::0;7138:28:::1;::::0;7157:8:::1;7143::::0;;::::1;::::0;7157;;::::1;;7138:18;:28::i;:::-;7130:5;:36:::0;7119:47:::1;7221:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;7226:10:::1;::::0;7221:38:::1;::::0;;;;;;;;;::::1;1234:1;;;;;;;;;1256::::0;1245:8;:12;;;;5794:1472;;;:::o;221:45:28:-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;403:46:30:-;444:5;403:46;:::o;9296:343::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9364:6:::1;::::0;9413::::1;::::0;9523:8:::1;::::0;9471:47:::1;::::0;;;;;9512:4:::1;9471:47;::::0;::::1;::::0;;;9364:6:::1;::::0;;::::1;::::0;9413;;::::1;::::0;9444:89:::1;::::0;9364:6;;9467:2;;9471:61:::1;::::0;9523:8:::1;;::::0;9364:6;;9471:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;9364:6;9471:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9471:47:30;;:51:::1;:61::i;:::-;9444:13;:89::i;:::-;9543;9557:7;9566:2;9570:61;9622:8;;;;;;;;;;;9570:61;;9584:7;9570:32;;;9611:4;9570:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;9543:89;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;9296:343:30:o;550:22::-;;;;;;:::o;605:21::-;;;;;;:::o;2766:662:28:-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9685:170:30:-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9747:6:::1;::::0;9733:46:::1;::::0;;;;;9773:4:::1;9733:46;::::0;::::1;::::0;;;9725:123:::1;::::0;9747:6:::1;;::::0;9733:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;9747:6;9733:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9733:46:30;9795:6:::1;::::0;9781:46:::1;::::0;;;;;9821:4:::1;9781:46;::::0;::::1;::::0;;;9795:6:::1;::::0;;::::1;::::0;9781:31:::1;::::0;:46;;;;;9733::::1;::::0;9781;;;;;;;;9795:6;9781:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9781:46:30;9829:8:::1;::::0;::::1;::::0;;::::1;::::0;9839;;::::1;;9725:7;:123::i;:::-;1256:1:::0;1245:8;:12;9685:170::o;1503:284::-;507:34;;;;;;;;;;;;;;;;;1630:43;;1619:10;1630:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:55;;;;1584:12;;1598:17;;1619:10;;;1630:43;1619:55;;;1630:43;1619:55;;1630:43;1619:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1583:91;;;;1692:7;:57;;;;-1:-1:-1;1704:11:30;;:16;;:44;;;1735:4;1724:24;;;;;;;;;;;;;;;-1:-1:-1;1724:24:30;1704:44;1684:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:284;;;;;:::o;464:140:37:-;516:6;542;;;:30;;-1:-1:-1;;557:5:37;;;571:1;566;557:5;566:1;552:15;;;;;:20;542:30;534:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:127;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2590:847:30;2701:23;;;;;;:50;;-1:-1:-1;2728:23:30;;;;2701:50;2693:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:18;;2816:23;:15;:23;;;2888:18;;;;;2871:35;;;2943:15;;;;;;:33;;-1:-1:-1;2962:14:30;;;;;2943:33;:51;;;;-1:-1:-1;2980:14:30;;;;;2943:51;2939:332;;;3147:11;3094:64;;3099:44;3133:9;3099:27;3116:9;3099:16;:27::i;:::-;:33;;;;:44::i;:::-;3070:20;:88;;3094:50;;;;;:64;;;;3070:88;;;3196:64;;;3201:44;3235:9;3201:27;3218:9;3201:16;:27::i;:44::-;3172:20;:88;;3196:50;;;;;:64;;;;3172:88;;;2939:332;3280:8;:28;;;;;;;;;;;;3318;;;;;;;;;;;;3356:35;;;;;;;;;;;;3406:24;;;3411:8;;;3406:24;;3421:8;;;;;;;3406:24;;;;;;;;;;;;;;;;;2590:847;;;;;;:::o;1779:166:28:-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;1951:216::-;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;3524:819:30:-;3597:10;3619:13;3653:7;;;;;;;;;;;3635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3635:34:30;3730:5;;3687:19;;;;;;;-1:-1:-1;3635:34:30;;-1:-1:-1;3730:5:30;3760:577;;3789:11;;3785:485;;3820:10;3833:41;3843:30;;:15;;;;:30;;:19;:30::i;3833:41::-;3820:54;;3892:14;3909:17;3919:6;3909:9;:17::i;:::-;3892:34;;3956:9;3948:5;:17;3944:312;;;3989:14;4006:37;4022:20;:5;4032:9;4022;:20::i;:::-;4006:11;;;:15;:37::i;:::-;3989:54;-1:-1:-1;4065:16:30;4084:27;4101:9;4084:12;:5;4094:1;4084:9;:12::i;:::-;:16;;:27::i;:::-;4065:46;;4133:14;4162:11;4150:9;:23;;;;;;;-1:-1:-1;4199:13:30;;4195:42;;4214:23;4220:5;4227:9;4214:5;:23::i;:::-;3944:312;;;;3785:485;;;3760:577;;;4290:11;;4286:51;;4325:1;4317:5;:9;4286:51;3524:819;;;;;;:::o;344:292:36:-;389:6;415:1;411;:5;407:223;;;-1:-1:-1;436:1:36;468;464;460:5;;:9;483:89;494:1;490;:5;483:89;;;519:1;515:5;;556:1;551;547;543;:5;;;;;;:9;542:15;;;;;;538:19;;483:89;;;407:223;;;;592:6;;588:42;;-1:-1:-1;618:1:36;588:42;344:292;;;:::o;1365:197:28:-;1437:11;;:22;;1453:5;1437:15;:22::i;:::-;1423:11;:36;;;1485:13;;;;;:9;:13;;;;;;:24;;1503:5;1485:17;:24::i;:::-;1469:13;;;;;;;:9;:13;;;;;;;;:40;;;;1524:31;;;;;;;1469:13;;;;1524:31;;;;;;;;;;1365:197;;:::o;135:94:36:-;187:6;213:1;209;:5;:13;;221:1;209:13;;;217:1;209:13;205:17;135:94;-1:-1:-1;;;135:94:36:o;1568:205:28:-;1646:15;;;;;;;:9;:15;;;;;;:26;;1666:5;1646:19;:26::i;:::-;1628:15;;;;;;;:9;:15;;;;;:44;;;;1696:11;:22;;1712:5;1696:15;:22::i;:::-;1682:11;:36;;;1733:33;;;;;;;;;;;;;;;;;;;;;;1568:205;;:::o;320:118:38:-;395:10;;268:6;395:17;;320:118::o;506:106::-;566:9;595:10;;;591:14;;;595:10;591:14;;;;;;506:106;-1:-1:-1;;;506:106:38:o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/UniswapV2Pair.sol\":\"UniswapV2Pair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/UniswapV2ERC20.sol\":{\"keccak256\":\"0x23fd4ed2f1624e38f9100c119e65b4eaef7e216f069f735a4a373bee49b970c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a745ba8357e0f2fdf05c68610491c09f469fee29c74cf924dac0ddc3b0e1cfc7\",\"dweb:/ipfs/QmRdmbCrhiqwmhj8C4Lb7ZXoJTZEciLPEUvKhvt87n3Bwb\"]},\"elephantdexcore/contracts/UniswapV2Pair.sol\":{\"keccak256\":\"0xfd3327e1172e647fcaa5b2d1f5b6d7c56d40b5ccb693f37e0f5023898364486d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://016a836a09b4693ce37baaf14252c4937461d0b05767c8df86878fd111f4e913\",\"dweb:/ipfs/QmQXAzhsUj3dVVDmC42LatXHKAAuWNgxPQRSkEX9s2xhLa\"]},\"elephantdexcore/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x76866491759a6f069ddc030d52df08d4105a8bcef0e3330dee261cf7ee049b1a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3b2a687415260c33e491cc2d03577729802b5ff8227cc9fd7b45b28cbd24e4\",\"dweb:/ipfs/QmNtBCKh68KLnNj8M2rQDPnbBfKhntzaZ1JReQx4Axtx5w\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":{\"keccak256\":\"0x6bf2e1cd601f8df7a25606a03fb01532f33aa5d77278ef6e7fb72a3b95a2d8d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aaaf7c44351d883b3830e484cc20fe1f91b832aaeb8c4631b1848b6bb08c7661\",\"dweb:/ipfs/QmbxistLwfsuywWLHgBpDcQu4f5j6wV13Vs3JrSd1gjX9N\"]},\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]},\"elephantdexcore/contracts/libraries/Math.sol\":{\"keccak256\":\"0x3e0a5520297ed1dc711407fb10e309db409fc8143e19a0a7751aa064bb99dfa1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5d44428171de5cd02c255aebd53d88e78cfee0b877bc1a13bbafa6e83eb0597d\",\"dweb:/ipfs/QmXLVkrxEpA57vgP2CYh26PPGqaFy8C5peKKSdLobfCv31\"]},\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]},\"elephantdexcore/contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc4574ee73aa220d7a8b363ef7c874c099b6007b0f30365993e758c8337a294d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e27c362f1a0f0bf97004bccab2b19faaea0706bc8a21febca6e365de77a20536\",\"dweb:/ipfs/QmZipPjDSok9FxPjMB5rPTuJ7P2VvhaNzHA92TpYvE16FR\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033",
      "bin": "60806040526001600c5534801561001557600080fd5b50604080518082018252601181527022b632b83430b73a102628102a37b5b2b760791b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b518061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846003612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846003612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601181526020017f456c657068616e74204c5020546f6b656e00000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600b81526020017f454c455048414e542d4c5000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866002612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220f5c5d56f7047deb6b3b23de79fd12f46ec74c81e9a969186d206992c7d40754a64736f6c634300060c0033",
      "srcmap": "285:9572:30:-:0;;;1126:1;1102:25;;2182:58;;;;;;;;;-1:-1:-1;1227:4:28;;;;;;;;;;;-1:-1:-1;1227:4:28;;;;;1261:10;;;;;;;;;;-1:-1:-1;1261:10:28;;;;1070:272;;1098:95;1070:272;;;;1211:22;1070:272;;;;1251:21;1070:272;;;;1000:9;1070:272;;;;1323:4;1070:272;;;;;;;;;;;;;;;;;;;;;;;;;1047:305;;;;;1028:16;:324;2213:7:30;:20;;-1:-1:-1;2213:20:30;2223:10;2213:20;;;-1:-1:-1;;285:9572:30;-1:-1:-1;285:9572:30;;",
      "srcmap-runtime": "285:9572:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7375:1875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7375:1875:30;;-1:-1:-1;7375:1875:30;-1:-1:-1;7375:1875:30;:::i;:::-;;166:49:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1270:227:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:144:28;;;;;;;;;;;;;;;;-1:-1:-1;2173:144:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;578:21:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;313:24:28;;;:::i;:::-;;;;;;;;;;;;;;;;2465:295;;;;;;;;;;;;;;;;-1:-1:-1;2465:295:28;;;;;;;;;;;;;;;;;;:::i;599:108::-;;;:::i;272:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;458:31;;;:::i;2302:206:30:-;;;;;;;;;;;;;;;;-1:-1:-1;2302:206:30;;;;;;;;;;;:::i;922:32::-;;;:::i;960:::-;;;:::i;4452:1233::-;;;;;;;;;;;;;;;;-1:-1:-1;4452:1233:30;;;;:::i;343:41:28:-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:28;;;;:::i;998:17:30:-;;;:::i;713:38:28:-;;;;;;;;;;;;;;;;-1:-1:-1;713:38:28;;;;:::i;5794:1472:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5794:1472:30;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;221:45:28;;;:::i;2323:136::-;;;;;;;;;;;;;;;;-1:-1:-1;2323:136:28;;;;;;;;;:::i;403:46:30:-;;;:::i;9296:343::-;;;;;;;;;;;;;;;;-1:-1:-1;9296:343:30;;;;:::i;550:22::-;;;:::i;605:21::-;;;:::i;2766:662:28:-;;;;;;;;;;;;;;;;-1:-1:-1;2766:662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:61::-;;;;;;;;;;;;;;;;-1:-1:-1;390:61:28;;;;;;;;;;;:::i;9685:170:30:-;;;:::i;7375:1875::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;7488:14;;;;:32:::1;;;7519:1;7506:10;:14;7488:32;7480:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:17;7592::::0;7614:13:::1;:11;:13::i;:::-;7572:55;;;;;7673:9;7660:22;;:10;:22;:48;;;;;7699:9;7686:22;;:10;:22;7660:48;7652:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7886:6;::::0;7920::::1;::::0;7757:13:::1;::::0;;;7886:6:::1;::::0;;::::1;::::0;7920;;::::1;::::0;7944:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;7967:7;7961:13;;:2;:13;;;;7944:30;7936:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8014:14:::0;;8010:58:::1;;8030:38;8044:7;8053:2;8057:10;8030:13;:38::i;:::-;8116:14:::0;;8112:58:::1;;8132:38;8146:7;8155:2;8159:10;8132:13;:38::i;:::-;8218:15:::0;;8214:97:::1;;8252:2;8235:34;;;8270:10;8282;8294;8306:4;;8235:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8214:97;8332:47;::::0;;;;;8373:4:::1;8332:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8332:47:30;8400::::1;::::0;;;;;8441:4:::1;8400:47;::::0;::::1;::::0;;;8332;;-1:-1:-1;8400:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;8332::::1;::::0;8400;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8400:47:30;;-1:-1:-1;8467:14:30::1;::::0;-1:-1:-1;;8495:22:30::1;::::0;::::1;::::0;;::::1;8484:33:::0;::::1;:75;;8558:1;8484:75;;;8544:10;8532:9;:22;;;8520:8;:35;8484:75;8467:92;;8569:14;8609:10;8597:9;:22;;;8586:8;:33;:75;;8660:1;8586:75;;;8646:10;8634:9;:22;;;8622:8;:35;8586:75;8569:92;;8691:1;8679:9;:13;:30;;;;8708:1;8696:9;:13;8679:30;8671:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8834:21;8858:40;8881:16;:9:::0;8895:1:::1;8881:13;:16::i;:::-;8858:18;:8:::0;8871:4:::1;8858:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;8834:64:::0;-1:-1:-1;8908:21:30::1;8932:40;8955:16;:9:::0;8969:1:::1;8955:13;:16::i;8932:40::-;8908:64:::0;-1:-1:-1;9032:43:30::1;9067:7;9032:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;8990:38;:16:::0;9011;8990:20:::1;:38::i;:::-;:85;;8982:110;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1234:1;;9113:49;9121:8;9131;9141:9;9152;9113:7;:49::i;:::-;9177:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;9182:10:::1;::::0;9177:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;;;;;;;;;7375:1875:30:o;166:49:28:-;;;;;;;;;;;;;;;;;;;:::o;1270:227:30:-;1402:8;;;;;;;1432;;;;;;;1472:18;;;;;;1270:227::o;2173:144:28:-;2237:4;2253:36;2262:10;2274:7;2283:5;2253:8;:36::i;:::-;-1:-1:-1;2306:4:28;2173:144;;;;;:::o;578:21:30:-;;;;;;:::o;313:24:28:-;;;;:::o;2465:295::-;2563:15;;;2543:4;2563:15;;;:9;:15;;;;;;;;2579:10;2563:27;;;;;;;;2599:2;2563:39;2559:138;;2648:15;;;;;;;:9;:15;;;;;;;;2664:10;2648:27;;;;;;;;:38;;2680:5;2648:31;:38::i;:::-;2618:15;;;;;;;:9;:15;;;;;;;;2634:10;2618:27;;;;;;;:68;2559:138;2706:26;2716:4;2722:2;2726:5;2706:9;:26::i;:::-;-1:-1:-1;2749:4:28;2465:295;;;;;:::o;599:108::-;641:66;599:108;:::o;272:35::-;305:2;272:35;:::o;458:31::-;;;;:::o;2302:206:30:-;2397:7;;;;2383:10;:21;2375:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:16;;;;;;;;;;;;;;2485:6;:16;;;;;;;;;;;2302:206::o;922:32::-;;;;:::o;960:::-;;;;:::o;4452:1233::-;4501:14;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;4569:13:::1;:11;:13::i;:::-;-1:-1:-1::0;4637:6:30::1;::::0;4623:46:::1;::::0;;;;;4663:4:::1;4623:46;::::0;::::1;::::0;;;4527:55;;-1:-1:-1;4527:55:30;;-1:-1:-1;4607:13:30::1;::::0;4637:6:::1;::::0;;::::1;::::0;4623:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;4637:6;4623:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4623:46:30;4709:6:::1;::::0;4695:46:::1;::::0;;;;;4735:4:::1;4695:46;::::0;::::1;::::0;;;4623;;-1:-1:-1;4679:13:30::1;::::0;4709:6:::1;::::0;;::::1;::::0;4695:31:::1;::::0;:46;;;;;4623::::1;::::0;4695;;;;;;;;4709:6;4695:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4695:46:30;;-1:-1:-1;4751:12:30::1;4766:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4751:38:::0;-1:-1:-1;4799:12:30::1;4814:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;4799:38;;4848:10;4861:30;4870:9;4881;4861:8;:30::i;:::-;4901:17;4921:11:::0;4848:43;;-1:-1:-1;5024:17:30;5020:347:::1;;5069:54;444:5;5069:31;5079:20;:7:::0;5091;5079:11:::1;:20::i;:::-;5069:9;:31::i;:54::-;5057:66;;5136:36;5150:1;444:5;5136;:36::i;:::-;5020:347;;;5270:86;5279:37;::::0;::::1;:25;:7:::0;5291:12;5279:11:::1;:25::i;:::-;:37;;;;;;5318;::::0;::::1;:25;:7:::0;5330:12;5318:11:::1;:25::i;:::-;:37;;;;;;5270:8;:86::i;:::-;5258:98;;5020:347;5396:1;5384:9;:13;5376:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:20;5458:2;5462:9;5452:5;:20::i;:::-;5483:49;5491:8;5501;5511:9;5522;5483:7;:49::i;:::-;5546:5;5542:47;;;5580:8;::::0;5561:28:::1;::::0;5580:8:::1;5566::::0;;::::1;::::0;5580;;::::1;;5561:18;:28::i;:::-;5553:5;:36:::0;5542:47:::1;5644:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;5649:10:::1;::::0;5644:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;4452:1233:30;;;-1:-1:-1;;;;;;4452:1233:30:o;343:41:28:-;;;;;;;;;;;;;:::o;998:17:30:-;;;;:::o;713:38:28:-;;;;;;;;;;;;;:::o;5794:1472:30:-;5843:12;5857;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;;;1223:1;5923:13:::1;:11;:13::i;:::-;-1:-1:-1::0;5979:6:30::1;::::0;6059::::1;::::0;6137:47:::1;::::0;;;;;6178:4:::1;6137:47;::::0;::::1;::::0;;;5881:55;;-1:-1:-1;5881:55:30;;-1:-1:-1;5979:6:30::1;::::0;;::::1;::::0;6059;::::1;::::0;5961:15:::1;::::0;5979:6;;6137:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;5979:6;6137:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6137:47:30;6210::::1;::::0;;;;;6251:4:::1;6210:47;::::0;::::1;::::0;;;6137;;-1:-1:-1;6194:13:30::1;::::0;6210:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6137::::1;::::0;6210;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6210:47:30;6302:4:::1;6267:14;6284:24:::0;;;:9:::1;6210:47;6284:24:::0;;;;;6210:47;;-1:-1:-1;6332:30:30::1;6341:9:::0;6352;6332:8:::1;:30::i;:::-;6372:17;6392:11:::0;6319:43;;-1:-1:-1;6392:11:30;6501:23:::1;:9:::0;6515:8;6501:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;6633:12:30;6607:23:::1;:9:::0;6621:8;6607:13:::1;:23::i;:::-;:38;;;;;;6597:48;;6721:1;6711:7;:11;:26;;;;;6736:1;6726:7;:11;6711:26;6703:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6792:31;6806:4;6813:9;6792:5;:31::i;:::-;6833:35;6847:7;6856:2;6860:7;6833:13;:35::i;:::-;6878;6892:7;6901:2;6905:7;6878:13;:35::i;:::-;6934:47;::::0;;;;;6975:4:::1;6934:47;::::0;::::1;::::0;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6934:47:30;7002::::1;::::0;;;;;7043:4:::1;7002:47;::::0;::::1;::::0;;;6934;;-1:-1:-1;7002:32:30::1;::::0;::::1;::::0;::::1;::::0;:47;;;;;6934::::1;::::0;7002;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;7002:47:30;;-1:-1:-1;7060:49:30::1;7068:8:::0;7002:47;7088:9;7099;7060:7:::1;:49::i;:::-;7123:5;7119:47;;;7157:8;::::0;7138:28:::1;::::0;7157:8:::1;7143::::0;;::::1;::::0;7157;;::::1;;7138:18;:28::i;:::-;7130:5;:36:::0;7119:47:::1;7221:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;7226:10:::1;::::0;7221:38:::1;::::0;;;;;;;;;::::1;1234:1;;;;;;;;;1256::::0;1245:8;:12;;;;5794:1472;;;:::o;221:45:28:-;;;;;;;;;;;;;;;;;;;:::o;2323:136::-;2383:4;2399:32;2409:10;2421:2;2425:5;2399:9;:32::i;403:46:30:-;444:5;403:46;:::o;9296:343::-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9364:6:::1;::::0;9413::::1;::::0;9523:8:::1;::::0;9471:47:::1;::::0;;;;;9512:4:::1;9471:47;::::0;::::1;::::0;;;9364:6:::1;::::0;;::::1;::::0;9413;;::::1;::::0;9444:89:::1;::::0;9364:6;;9467:2;;9471:61:::1;::::0;9523:8:::1;;::::0;9364:6;;9471:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;9364:6;9471:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9471:47:30;;:51:::1;:61::i;:::-;9444:13;:89::i;:::-;9543;9557:7;9566:2;9570:61;9622:8;;;;;;;;;;;9570:61;;9584:7;9570:32;;;9611:4;9570:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;9543:89;-1:-1:-1::0;;1256:1:30;1245:8;:12;-1:-1:-1;9296:343:30:o;550:22::-;;;;;;:::o;605:21::-;;;;;;:::o;2766:662:28:-;2911:15;2899:8;:27;;2891:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:16;;3156:13;;;;2959:14;3156:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3105:77;;641:66;3105:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:88;;;;;;2999:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:231;;;;;;;;;3244:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:14;;3156:15;3244:26;;;;;-1:-1:-1;3244:26:28;;;;;;;;;;3156:15;3244:26;;;;;;;;;;;;;;;-1:-1:-1;;3244:26:28;;;;;;-1:-1:-1;;3288:30:28;;;;;;;:59;;;3342:5;3322:25;;:16;:25;;;3288:59;3280:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:31;3399:5;3406:7;3415:5;3390:8;:31::i;:::-;2766:662;;;;;;;;;:::o;390:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9685:170:30:-;1167:8;;1179:1;1167:13;1159:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:1;1212:8;:12;9747:6:::1;::::0;9733:46:::1;::::0;;;;;9773:4:::1;9733:46;::::0;::::1;::::0;;;9725:123:::1;::::0;9747:6:::1;;::::0;9733:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;9747:6;9733:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9733:46:30;9795:6:::1;::::0;9781:46:::1;::::0;;;;;9821:4:::1;9781:46;::::0;::::1;::::0;;;9795:6:::1;::::0;;::::1;::::0;9781:31:::1;::::0;:46;;;;;9733::::1;::::0;9781;;;;;;;;9795:6;9781:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9781:46:30;9829:8:::1;::::0;::::1;::::0;;::::1;::::0;9839;;::::1;;9725:7;:123::i;:::-;1256:1:::0;1245:8;:12;9685:170::o;1503:284::-;507:34;;;;;;;;;;;;;;;;;1630:43;;1619:10;1630:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:55;;;;1584:12;;1598:17;;1619:10;;;1630:43;1619:55;;;1630:43;1619:55;;1630:43;1619:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1583:91;;;;1692:7;:57;;;;-1:-1:-1;1704:11:30;;:16;;:44;;;1735:4;1724:24;;;;;;;;;;;;;;;-1:-1:-1;1724:24:30;1704:44;1684:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:284;;;;;:::o;464:140:37:-;516:6;542;;;:30;;-1:-1:-1;;557:5:37;;;571:1;566;557:5;566:1;552:15;;;;;:20;542:30;534:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:127;414:5;;;409:16;;;;401:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2590:847:30;2701:23;;;;;;:50;;-1:-1:-1;2728:23:30;;;;2701:50;2693:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:18;;2816:23;:15;:23;;;2888:18;;;;;2871:35;;;2943:15;;;;;;:33;;-1:-1:-1;2962:14:30;;;;;2943:33;:51;;;;-1:-1:-1;2980:14:30;;;;;2943:51;2939:332;;;3147:11;3094:64;;3099:44;3133:9;3099:27;3116:9;3099:16;:27::i;:::-;:33;;;;:44::i;:::-;3070:20;:88;;3094:50;;;;;:64;;;;3070:88;;;3196:64;;;3201:44;3235:9;3201:27;3218:9;3201:16;:27::i;:44::-;3172:20;:88;;3196:50;;;;;:64;;;;3172:88;;;2939:332;3280:8;:28;;;;;;;;;;;;3318;;;;;;;;;;;;3356:35;;;;;;;;;;;;3406:24;;;3411:8;;;3406:24;;3421:8;;;;;;;3406:24;;;;;;;;;;;;;;;;;2590:847;;;;;;:::o;1779:166:28:-;1859:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1907:31;;;;;;;;;;;;;;;;;1779:166;;;:::o;1951:216::-;2044:15;;;;;;;:9;:15;;;;;;:26;;2064:5;2044:19;:26::i;:::-;2026:15;;;;;;;;:9;:15;;;;;;:44;;;;2096:13;;;;;;;:24;;2114:5;2096:17;:24::i;:::-;2080:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2135:25;;;;;;;2080:13;;2135:25;;;;;;;;;;;;;1951:216;;;:::o;3524:819:30:-;3597:10;3619:13;3653:7;;;;;;;;;;;3635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3635:34:30;3730:5;;3687:19;;;;;;;-1:-1:-1;3635:34:30;;-1:-1:-1;3730:5:30;3760:577;;3789:11;;3785:485;;3820:10;3833:41;3843:30;;:15;;;;:30;;:19;:30::i;3833:41::-;3820:54;;3892:14;3909:17;3919:6;3909:9;:17::i;:::-;3892:34;;3956:9;3948:5;:17;3944:312;;;3989:14;4006:37;4022:20;:5;4032:9;4022;:20::i;:::-;4006:11;;;:15;:37::i;:::-;3989:54;-1:-1:-1;4065:16:30;4084:27;4101:9;4084:12;:5;4094:1;4084:9;:12::i;:::-;:16;;:27::i;:::-;4065:46;;4133:14;4162:11;4150:9;:23;;;;;;;-1:-1:-1;4199:13:30;;4195:42;;4214:23;4220:5;4227:9;4214:5;:23::i;:::-;3944:312;;;;3785:485;;;3760:577;;;4290:11;;4286:51;;4325:1;4317:5;:9;4286:51;3524:819;;;;;;:::o;344:292:36:-;389:6;415:1;411;:5;407:223;;;-1:-1:-1;436:1:36;468;464;460:5;;:9;483:89;494:1;490;:5;483:89;;;519:1;515:5;;556:1;551;547;543;:5;;;;;;:9;542:15;;;;;;538:19;;483:89;;;407:223;;;;592:6;;588:42;;-1:-1:-1;618:1:36;588:42;344:292;;;:::o;1365:197:28:-;1437:11;;:22;;1453:5;1437:15;:22::i;:::-;1423:11;:36;;;1485:13;;;;;:9;:13;;;;;;:24;;1503:5;1485:17;:24::i;:::-;1469:13;;;;;;;:9;:13;;;;;;;;:40;;;;1524:31;;;;;;;1469:13;;;;1524:31;;;;;;;;;;1365:197;;:::o;135:94:36:-;187:6;213:1;209;:5;:13;;221:1;209:13;;;217:1;209:13;205:17;135:94;-1:-1:-1;;;135:94:36:o;1568:205:28:-;1646:15;;;;;;;:9;:15;;;;;;:26;;1666:5;1646:19;:26::i;:::-;1628:15;;;;;;;:9;:15;;;;;:44;;;;1696:11;:22;;1712:5;1696:15;:22::i;:::-;1682:11;:36;;;1733:33;;;;;;;;;;;;;;;;;;;;;;1568:205;;:::o;320:118:38:-;395:10;;268:6;395:17;;320:118::o;506:106::-;566:9;595:10;;;591:14;;;595:10;591:14;;;;;;506:106;-1:-1:-1;;;506:106:38:o;199:126:37:-;282:5;;;277:16;;;;269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "elephantdexcore/contracts/interfaces/IERC20.sol:IERC20Uniswap": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/interfaces/IERC20.sol\":\"IERC20Uniswap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x76866491759a6f069ddc030d52df08d4105a8bcef0e3330dee261cf7ee049b1a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3b2a687415260c33e491cc2d03577729802b5ff8227cc9fd7b45b28cbd24e4\",\"dweb:/ipfs/QmNtBCKh68KLnNj8M2rQDPnbBfKhntzaZ1JReQx4Axtx5w\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol:IUniswapV2Callee": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "uniswapV2Call",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV2Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":\"IUniswapV2Callee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol\":{\"keccak256\":\"0x6bf2e1cd601f8df7a25606a03fb01532f33aa5d77278ef6e7fb72a3b95a2d8d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aaaf7c44351d883b3830e484cc20fe1f91b832aaeb8c4631b1848b6bb08c7661\",\"dweb:/ipfs/QmbxistLwfsuywWLHgBpDcQu4f5j6wV13Vs3JrSd1gjX9N\"]}},\"version\":1}",
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "uniswapV2Call",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol:IUniswapV2ERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol\":\"IUniswapV2ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol\":{\"keccak256\":\"0xd179ddb73cdb485120799c3e5f446bd4f9885205528f1e51eda8b3074a819d88\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea5afb5efa71c14f1e3484e4d4a10cab3c94d116d357e517eaa658bdd4591a3b\",\"dweb:/ipfs/QmRH5VJr6NAAKk4DXT85Pf6B6frLViUnHf8bFbfGeKt8Q8\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol:IUniswapV2Factory": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":\"IUniswapV2Factory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0xb8d3fecafdca8fc36865db78ea552c0ab311df74b44d3d82015f1dc151e0537f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eeaab619ce439ebc1244237981f5557e3a892e62b1e9c43adbfee646707ae17f\",\"dweb:/ipfs/QmfU4zVedNZhBT1fQAaKwc34bkxqDnGNTPYf5zpz3Hjmk3\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol:IUniswapV2Pair": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x3368b1700fc4a77b780967cdd03c731da787a99f054f69f4b404d3cd3691712d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://47521585cb5e7f2a8a1586b7d4f09e5ffc80929af8f9ed18012a1b4a82920b9f\",\"dweb:/ipfs/QmdHmVCdnyDq9GFDuRKXe69ATcY4ABXehHzoKRnzxtWNFv\"]}},\"version\":1}",
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "elephantdexcore/contracts/libraries/Math.sol:Math": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b0bc0c0d66f324c62117dab99e2302719e24c2d1d4df963c64c54ef0f51934c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0xBC0C0D66F324C62117DAB99 0xE2 ADDRESS 0x27 NOT 0xE2 0x4C 0x2D SAR 0x4D 0xF9 PUSH4 0xC64C54EF 0xF MLOAD SWAP4 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "116:522:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b0bc0c0d66f324c62117dab99e2302719e24c2d1d4df963c64c54ef0f51934c64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0xBC0C0D66F324C62117DAB99 0xE2 ADDRESS 0x27 NOT 0xE2 0x4C 0x2D SAR 0x4D 0xF9 PUSH4 0xC64C54EF 0xF MLOAD SWAP4 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "116:522:36:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/libraries/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/libraries/Math.sol\":{\"keccak256\":\"0x3e0a5520297ed1dc711407fb10e309db409fc8143e19a0a7751aa064bb99dfa1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5d44428171de5cd02c255aebd53d88e78cfee0b877bc1a13bbafa6e83eb0597d\",\"dweb:/ipfs/QmXLVkrxEpA57vgP2CYh26PPGqaFy8C5peKKSdLobfCv31\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b0bc0c0d66f324c62117dab99e2302719e24c2d1d4df963c64c54ef0f51934c64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b0bc0c0d66f324c62117dab99e2302719e24c2d1d4df963c64c54ef0f51934c64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b0bc0c0d66f324c62117dab99e2302719e24c2d1d4df963c64c54ef0f51934c64736f6c634300060c0033",
      "srcmap": "116:522:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "116:522:36:-:0;;;;;;;;"
    },
    "elephantdexcore/contracts/libraries/SafeMath.sol:SafeMathUniswap": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056eefce17e356163d7b7da89338e97ba3e568e357a615fe6bca82f2dd10b97aa64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP 0xEE 0xFC 0xE1 PUSH31 0x356163D7B7DA89338E97BA3E568E357A615FE6BCA82F2DD10B97AA64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "169:437:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056eefce17e356163d7b7da89338e97ba3e568e357a615fe6bca82f2dd10b97aa64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP 0xEE 0xFC 0xE1 PUSH31 0x356163D7B7DA89338E97BA3E568E357A615FE6BCA82F2DD10B97AA64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "169:437:37:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/libraries/SafeMath.sol\":\"SafeMathUniswap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xbde2cf4655f2f21a4e6cc76c28cf88ade1d8150289c208d48662135be9d5dd97\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bd8f46ed9dc5ad8123e596a3b762815503a04ce8a83098d80ba45085fe3c5953\",\"dweb:/ipfs/QmUa6d2v7Miy26dzUctkrumi5My4G34TL9QNUj9u4hh7iS\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056eefce17e356163d7b7da89338e97ba3e568e357a615fe6bca82f2dd10b97aa64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056eefce17e356163d7b7da89338e97ba3e568e357a615fe6bca82f2dd10b97aa64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056eefce17e356163d7b7da89338e97ba3e568e357a615fe6bca82f2dd10b97aa64736f6c634300060c0033",
      "srcmap": "169:437:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "169:437:37:-:0;;;;;;;;"
    },
    "elephantdexcore/contracts/libraries/UQ112x112.sol:UQ112x112": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cd31a014e570f6115b3a72bb9eaf6b3800a3b6159db72c251dd214f5572e92064736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xD3 BYTE ADD 0x4E JUMPI 0xF PUSH2 0x15B3 0xA7 0x2B 0xB9 0xEA 0xF6 0xB3 DUP1 EXP EXTCODESIZE PUSH2 0x59DB PUSH19 0xC251DD214F5572E92064736F6C634300060C00 CALLER ",
          "sourceMap": "220:394:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cd31a014e570f6115b3a72bb9eaf6b3800a3b6159db72c251dd214f5572e92064736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xD3 BYTE ADD 0x4E JUMPI 0xF PUSH2 0x15B3 0xA7 0x2B 0xB9 0xEA 0xF6 0xB3 DUP1 EXP EXTCODESIZE PUSH2 0x59DB PUSH19 0xC251DD214F5572E92064736F6C634300060C00 CALLER ",
          "sourceMap": "220:394:38:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"elephantdexcore/contracts/libraries/UQ112x112.sol\":\"UQ112x112\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"elephantdexcore/contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc4574ee73aa220d7a8b363ef7c874c099b6007b0f30365993e758c8337a294d8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e27c362f1a0f0bf97004bccab2b19faaea0706bc8a21febca6e365de77a20536\",\"dweb:/ipfs/QmZipPjDSok9FxPjMB5rPTuJ7P2VvhaNzHA92TpYvE16FR\"]}},\"version\":1}",
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cd31a014e570f6115b3a72bb9eaf6b3800a3b6159db72c251dd214f5572e92064736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cd31a014e570f6115b3a72bb9eaf6b3800a3b6159db72c251dd214f5572e92064736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cd31a014e570f6115b3a72bb9eaf6b3800a3b6159db72c251dd214f5572e92064736f6c634300060c0033",
      "srcmap": "220:394:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "220:394:38:-:0;;;;;;;;"
    }
  },
  "sources": {
    "@openzeppelin/contracts/access/Ownable.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "exportedSymbols": {
          "Ownable": [
            109
          ]
        },
        "id": 110,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:0"
          },
          {
            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
            "file": "../utils/Context.sol",
            "id": 2,
            "nodeType": "ImportDirective",
            "scope": 110,
            "sourceUnit": 1578,
            "src": "66:30:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": true,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4,
                  "name": "Context",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1577,
                  "src": "621:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Context_$1577",
                    "typeString": "contract Context"
                  }
                },
                "id": 5,
                "nodeType": "InheritanceSpecifier",
                "src": "621:7:0"
              }
            ],
            "contractDependencies": [
              1577
            ],
            "contractKind": "contract",
            "documentation": {
              "id": 3,
              "nodeType": "StructuredDocumentation",
              "src": "97:494:0",
              "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
            },
            "fullyImplemented": true,
            "id": 109,
            "linearizedBaseContracts": [
              109,
              1577
            ],
            "name": "Ownable",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "id": 7,
                "mutability": "mutable",
                "name": "_owner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 109,
                "src": "635:22:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 6,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "635:7:0",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 13,
                "name": "OwnershipTransferred",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 12,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "previousOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13,
                      "src": "691:29:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "691:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13,
                      "src": "722:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "722:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "690:57:0"
                },
                "src": "664:84:0"
              },
              {
                "body": {
                  "id": 34,
                  "nodeType": "Block",
                  "src": "874:135:0",
                  "statements": [
                    {
                      "assignments": [
                        18
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 18,
                          "mutability": "mutable",
                          "name": "msgSender",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 34,
                          "src": "884:17:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 17,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "884:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 21,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 19,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1565,
                          "src": "904:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 20,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "904:12:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "884:32:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 24,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 22,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7,
                          "src": "926:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 23,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18,
                          "src": "935:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "926:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 25,
                      "nodeType": "ExpressionStatement",
                      "src": "926:18:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 29,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "988:1:0",
                                "subdenomination": null,
                                "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": 28,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "980:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 27,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "980:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 30,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "980:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 31,
                            "name": "msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18,
                            "src": "992:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 26,
                          "name": "OwnershipTransferred",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "959:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 32,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "959:43:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 33,
                      "nodeType": "EmitStatement",
                      "src": "954:48:0"
                    }
                  ]
                },
                "documentation": {
                  "id": 14,
                  "nodeType": "StructuredDocumentation",
                  "src": "754:91:0",
                  "text": " @dev Initializes the contract setting the deployer as the initial owner."
                },
                "id": 35,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 15,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "862:2:0"
                },
                "returnParameters": {
                  "id": 16,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "874:0:0"
                },
                "scope": 109,
                "src": "850:159:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 43,
                  "nodeType": "Block",
                  "src": "1140:30:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 41,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7,
                        "src": "1157:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "functionReturnParameters": 40,
                      "id": 42,
                      "nodeType": "Return",
                      "src": "1150:13:0"
                    }
                  ]
                },
                "documentation": {
                  "id": 36,
                  "nodeType": "StructuredDocumentation",
                  "src": "1015:65:0",
                  "text": " @dev Returns the address of the current owner."
                },
                "functionSelector": "8da5cb5b",
                "id": 44,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "owner",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 37,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1099:2:0"
                },
                "returnParameters": {
                  "id": 40,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 39,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 44,
                      "src": "1131:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 38,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1130:9:0"
                },
                "scope": 109,
                "src": "1085:85:0",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 57,
                  "nodeType": "Block",
                  "src": "1279:96:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 48,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44,
                                "src": "1297:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 49,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1297:7:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 50,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1565,
                                "src": "1308:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 51,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1308:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1297:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                            "id": 53,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1322:34:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                              "typeString": "literal_string \"Ownable: caller is not the owner\""
                            },
                            "value": "Ownable: caller is not the owner"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                              "typeString": "literal_string \"Ownable: caller is not the owner\""
                            }
                          ],
                          "id": 47,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1289:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 54,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1289:68:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 55,
                      "nodeType": "ExpressionStatement",
                      "src": "1289:68:0"
                    },
                    {
                      "id": 56,
                      "nodeType": "PlaceholderStatement",
                      "src": "1367:1:0"
                    }
                  ]
                },
                "documentation": {
                  "id": 45,
                  "nodeType": "StructuredDocumentation",
                  "src": "1176:77:0",
                  "text": " @dev Throws if called by any account other than the owner."
                },
                "id": 58,
                "name": "onlyOwner",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 46,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1276:2:0"
                },
                "src": "1258:117:0",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 79,
                  "nodeType": "Block",
                  "src": "1771:91:0",
                  "statements": [
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 65,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7,
                            "src": "1807:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 68,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1823:1:0",
                                "subdenomination": null,
                                "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": 67,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1815:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 66,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1815:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 69,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1815:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 64,
                          "name": "OwnershipTransferred",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "1786:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 70,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1786:40:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 71,
                      "nodeType": "EmitStatement",
                      "src": "1781:45:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 77,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 72,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7,
                          "src": "1836:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 75,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1853:1:0",
                              "subdenomination": null,
                              "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": 74,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1845:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 73,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1845:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 76,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1845:10:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1836:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 78,
                      "nodeType": "ExpressionStatement",
                      "src": "1836:19:0"
                    }
                  ]
                },
                "documentation": {
                  "id": 59,
                  "nodeType": "StructuredDocumentation",
                  "src": "1381:331:0",
                  "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                },
                "functionSelector": "715018a6",
                "id": 80,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 62,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 61,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "1761:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1761:9:0"
                  }
                ],
                "name": "renounceOwnership",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 60,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1743:2:0"
                },
                "returnParameters": {
                  "id": 63,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1771:0:0"
                },
                "scope": 109,
                "src": "1717:145:0",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 107,
                  "nodeType": "Block",
                  "src": "2081:170:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 94,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 89,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 83,
                              "src": "2099:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 92,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2119:1:0",
                                  "subdenomination": null,
                                  "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": 91,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2111:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 90,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2111:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 93,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2111:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2099:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                            "id": 95,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2123:40:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                              "typeString": "literal_string \"Ownable: new owner is the zero address\""
                            },
                            "value": "Ownable: new owner is the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                              "typeString": "literal_string \"Ownable: new owner is the zero address\""
                            }
                          ],
                          "id": 88,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2091:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 96,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2091:73:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 97,
                      "nodeType": "ExpressionStatement",
                      "src": "2091:73:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 99,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7,
                            "src": "2200:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 100,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 83,
                            "src": "2208:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 98,
                          "name": "OwnershipTransferred",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "2179:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2179:38:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 102,
                      "nodeType": "EmitStatement",
                      "src": "2174:43:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 103,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7,
                          "src": "2227:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 104,
                          "name": "newOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 83,
                          "src": "2236:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2227:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 106,
                      "nodeType": "ExpressionStatement",
                      "src": "2227:17:0"
                    }
                  ]
                },
                "documentation": {
                  "id": 81,
                  "nodeType": "StructuredDocumentation",
                  "src": "1868:138:0",
                  "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                },
                "functionSelector": "f2fde38b",
                "id": 108,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 86,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 85,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "2071:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2071:9:0"
                  }
                ],
                "name": "transferOwnership",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 84,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 83,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 108,
                      "src": "2038:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 82,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2038:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2037:18:0"
                },
                "returnParameters": {
                  "id": 87,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2081:0:0"
                },
                "scope": 109,
                "src": "2011:240:0",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              }
            ],
            "scope": 110,
            "src": "592:1661:0"
          }
        ],
        "src": "33:2221:0"
      }
    },
    "@openzeppelin/contracts/math/SafeMath.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "exportedSymbols": {
          "SafeMath": [
            464
          ]
        },
        "id": 465,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 111,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:1"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": {
              "id": 112,
              "nodeType": "StructuredDocumentation",
              "src": "66:563:1",
              "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
            },
            "fullyImplemented": true,
            "id": 464,
            "linearizedBaseContracts": [
              464
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 142,
                  "nodeType": "Block",
                  "src": "865:98:1",
                  "statements": [
                    {
                      "assignments": [
                        125
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 125,
                          "mutability": "mutable",
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 142,
                          "src": "875:9:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 124,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "875:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 129,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 126,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 115,
                          "src": "887:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 127,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 117,
                          "src": "891:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "887:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "875:17:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 130,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 125,
                          "src": "906:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 131,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 115,
                          "src": "910:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "906:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 137,
                      "nodeType": "IfStatement",
                      "src": "902:28:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "921:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "928:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 135,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "920:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 123,
                        "id": 136,
                        "nodeType": "Return",
                        "src": "913:17:1"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "948:4:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "id": 139,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "954:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 140,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "947:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "functionReturnParameters": 123,
                      "id": 141,
                      "nodeType": "Return",
                      "src": "940:16:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 113,
                  "nodeType": "StructuredDocumentation",
                  "src": "653:131:1",
                  "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                },
                "id": 143,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tryAdd",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 118,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 115,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 143,
                      "src": "805:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 114,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "805:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 117,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 143,
                      "src": "816:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 116,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "816:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "804:22:1"
                },
                "returnParameters": {
                  "id": 123,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 120,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 143,
                      "src": "850:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 119,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "850:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 122,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 143,
                      "src": "856:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 121,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "856:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "849:15:1"
                },
                "scope": 464,
                "src": "789:174:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 169,
                  "nodeType": "Block",
                  "src": "1185:75:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 155,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 148,
                          "src": "1199:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 156,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 146,
                          "src": "1203:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1199:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 162,
                      "nodeType": "IfStatement",
                      "src": "1195:28:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1214:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1221:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 160,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1213:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 154,
                        "id": 161,
                        "nodeType": "Return",
                        "src": "1206:17:1"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1241:4:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 164,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 146,
                              "src": "1247:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 165,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 148,
                              "src": "1251:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1247:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 167,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1240:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "functionReturnParameters": 154,
                      "id": 168,
                      "nodeType": "Return",
                      "src": "1233:20:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 144,
                  "nodeType": "StructuredDocumentation",
                  "src": "969:135:1",
                  "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                },
                "id": 170,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "trySub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 149,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 146,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 170,
                      "src": "1125:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1125:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 148,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 170,
                      "src": "1136:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 147,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1136:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1124:22:1"
                },
                "returnParameters": {
                  "id": 154,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 151,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 170,
                      "src": "1170:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 150,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1170:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 153,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 170,
                      "src": "1176:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1176:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1169:15:1"
                },
                "scope": 464,
                "src": "1109:151:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 210,
                  "nodeType": "Block",
                  "src": "1484:359:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 182,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 173,
                          "src": "1716:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1721:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1716:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 189,
                      "nodeType": "IfStatement",
                      "src": "1712:28:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1732:4:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1738:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 187,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1731:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 181,
                        "id": 188,
                        "nodeType": "Return",
                        "src": "1724:16:1"
                      }
                    },
                    {
                      "assignments": [
                        191
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 191,
                          "mutability": "mutable",
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 210,
                          "src": "1750:9:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 190,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1750:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 195,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 192,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 173,
                          "src": "1762:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 193,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 175,
                          "src": "1766:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1762:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1750:17:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 196,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 191,
                            "src": "1781:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 197,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "1785:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1781:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 199,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 175,
                          "src": "1790:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1781:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 205,
                      "nodeType": "IfStatement",
                      "src": "1777:33:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1801:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1808:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 203,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1800:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 181,
                        "id": 204,
                        "nodeType": "Return",
                        "src": "1793:17:1"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1828:4:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "id": 207,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 191,
                            "src": "1834:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 208,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1827:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "functionReturnParameters": 181,
                      "id": 209,
                      "nodeType": "Return",
                      "src": "1820:16:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 171,
                  "nodeType": "StructuredDocumentation",
                  "src": "1266:137:1",
                  "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                },
                "id": 211,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tryMul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 176,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 173,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 211,
                      "src": "1424:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 172,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1424:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 175,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 211,
                      "src": "1435:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1435:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1423:22:1"
                },
                "returnParameters": {
                  "id": 181,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 178,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 211,
                      "src": "1469:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 177,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1469:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 180,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 211,
                      "src": "1475:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 179,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1475:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1468:15:1"
                },
                "scope": 464,
                "src": "1408:435:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 237,
                  "nodeType": "Block",
                  "src": "2068:76:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 223,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 216,
                          "src": "2082:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2087:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2082:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 230,
                      "nodeType": "IfStatement",
                      "src": "2078:29:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2098:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2105:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 228,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2097:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 222,
                        "id": 229,
                        "nodeType": "Return",
                        "src": "2090:17:1"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2125:4:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 232,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 214,
                              "src": "2131:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 233,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 216,
                              "src": "2135:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2131:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 235,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2124:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "functionReturnParameters": 222,
                      "id": 236,
                      "nodeType": "Return",
                      "src": "2117:20:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 212,
                  "nodeType": "StructuredDocumentation",
                  "src": "1849:138:1",
                  "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                },
                "id": 238,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tryDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 217,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 214,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 238,
                      "src": "2008:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 213,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2008:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 216,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 238,
                      "src": "2019:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 215,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2019:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2007:22:1"
                },
                "returnParameters": {
                  "id": 222,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 219,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 238,
                      "src": "2053:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 218,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2053:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 221,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 238,
                      "src": "2059:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 220,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2059:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2052:15:1"
                },
                "scope": 464,
                "src": "1992:152:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 264,
                  "nodeType": "Block",
                  "src": "2379:76:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 250,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 243,
                          "src": "2393:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2398:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2393:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 257,
                      "nodeType": "IfStatement",
                      "src": "2389:29:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2409:5:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2416:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 255,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2408:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 249,
                        "id": 256,
                        "nodeType": "Return",
                        "src": "2401:17:1"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2436:4:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 259,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 241,
                              "src": "2442:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 260,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 243,
                              "src": "2446:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2442:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 262,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2435:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "functionReturnParameters": 249,
                      "id": 263,
                      "nodeType": "Return",
                      "src": "2428:20:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 239,
                  "nodeType": "StructuredDocumentation",
                  "src": "2150:148:1",
                  "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                },
                "id": 265,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tryMod",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 244,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 241,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 265,
                      "src": "2319:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 240,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2319:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 243,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 265,
                      "src": "2330:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 242,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2330:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2318:22:1"
                },
                "returnParameters": {
                  "id": 249,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 246,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 265,
                      "src": "2364:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 245,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2364:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 248,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 265,
                      "src": "2370:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2370:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2363:15:1"
                },
                "scope": 464,
                "src": "2303:152:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 290,
                  "nodeType": "Block",
                  "src": "2757:108:1",
                  "statements": [
                    {
                      "assignments": [
                        276
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 276,
                          "mutability": "mutable",
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 290,
                          "src": "2767:9:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 275,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2767:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 280,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 277,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 268,
                          "src": "2779:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 278,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 270,
                          "src": "2783:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2779:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2767:17:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 282,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 276,
                              "src": "2802:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 283,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 268,
                              "src": "2807:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2802:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
                            "id": 285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2810:29:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                              "typeString": "literal_string \"SafeMath: addition overflow\""
                            },
                            "value": "SafeMath: addition overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                              "typeString": "literal_string \"SafeMath: addition overflow\""
                            }
                          ],
                          "id": 281,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2794:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2794:46:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 287,
                      "nodeType": "ExpressionStatement",
                      "src": "2794:46:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 288,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 276,
                        "src": "2857:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 274,
                      "id": 289,
                      "nodeType": "Return",
                      "src": "2850:8:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 266,
                  "nodeType": "StructuredDocumentation",
                  "src": "2461:224:1",
                  "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                },
                "id": 291,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 271,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 268,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 291,
                      "src": "2703:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 267,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2703:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 270,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 291,
                      "src": "2714:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 269,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2714:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2702:22:1"
                },
                "returnParameters": {
                  "id": 274,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 273,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 291,
                      "src": "2748:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 272,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2748:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2747:9:1"
                },
                "scope": 464,
                "src": "2690:175:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 312,
                  "nodeType": "Block",
                  "src": "3203:88:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 302,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 296,
                              "src": "3221:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 303,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 294,
                              "src": "3226:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3221:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                            "id": 305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3229:32:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                              "typeString": "literal_string \"SafeMath: subtraction overflow\""
                            },
                            "value": "SafeMath: subtraction overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                              "typeString": "literal_string \"SafeMath: subtraction overflow\""
                            }
                          ],
                          "id": 301,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3213:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3213:49:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 307,
                      "nodeType": "ExpressionStatement",
                      "src": "3213:49:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 308,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 294,
                          "src": "3279:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 309,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 296,
                          "src": "3283:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3279:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 300,
                      "id": 311,
                      "nodeType": "Return",
                      "src": "3272:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 292,
                  "nodeType": "StructuredDocumentation",
                  "src": "2871:260:1",
                  "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                },
                "id": 313,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 297,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 294,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 313,
                      "src": "3149:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3149:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 296,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 313,
                      "src": "3160:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 295,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3160:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3148:22:1"
                },
                "returnParameters": {
                  "id": 300,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 299,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 313,
                      "src": "3194:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 298,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3194:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3193:9:1"
                },
                "scope": 464,
                "src": "3136:155:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 346,
                  "nodeType": "Block",
                  "src": "3605:148:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 323,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 316,
                          "src": "3619:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3624:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3619:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 328,
                      "nodeType": "IfStatement",
                      "src": "3615:20:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3634:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 322,
                        "id": 327,
                        "nodeType": "Return",
                        "src": "3627:8:1"
                      }
                    },
                    {
                      "assignments": [
                        330
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 330,
                          "mutability": "mutable",
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 346,
                          "src": "3645:9:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 329,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3645:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 334,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 331,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 316,
                          "src": "3657:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 332,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 318,
                          "src": "3661:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3657:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3645:17:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 336,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 330,
                                "src": "3680:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 337,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 316,
                                "src": "3684:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3680:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 339,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 318,
                              "src": "3689:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3680:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                            "id": 341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3692:35:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                              "typeString": "literal_string \"SafeMath: multiplication overflow\""
                            },
                            "value": "SafeMath: multiplication overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                              "typeString": "literal_string \"SafeMath: multiplication overflow\""
                            }
                          ],
                          "id": 335,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3672:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3672:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 343,
                      "nodeType": "ExpressionStatement",
                      "src": "3672:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 344,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 330,
                        "src": "3745:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 322,
                      "id": 345,
                      "nodeType": "Return",
                      "src": "3738:8:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 314,
                  "nodeType": "StructuredDocumentation",
                  "src": "3297:236:1",
                  "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                },
                "id": 347,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 319,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 316,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 347,
                      "src": "3551:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 315,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3551:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 318,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 347,
                      "src": "3562:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 317,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3562:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3550:22:1"
                },
                "returnParameters": {
                  "id": 322,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 321,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 347,
                      "src": "3596:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 320,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3596:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3595:9:1"
                },
                "scope": 464,
                "src": "3538:215:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 368,
                  "nodeType": "Block",
                  "src": "4284:83:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 358,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 352,
                              "src": "4302:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4306:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4302:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                            "id": 361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4309:28:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                              "typeString": "literal_string \"SafeMath: division by zero\""
                            },
                            "value": "SafeMath: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                              "typeString": "literal_string \"SafeMath: division by zero\""
                            }
                          ],
                          "id": 357,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4294:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4294:44:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 363,
                      "nodeType": "ExpressionStatement",
                      "src": "4294:44:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 364,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 350,
                          "src": "4355:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 365,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 352,
                          "src": "4359:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4355:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 356,
                      "id": 367,
                      "nodeType": "Return",
                      "src": "4348:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 348,
                  "nodeType": "StructuredDocumentation",
                  "src": "3759:453:1",
                  "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                },
                "id": 369,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "div",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 353,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 350,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 369,
                      "src": "4230:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4230:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 352,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 369,
                      "src": "4241:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 351,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4241:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4229:22:1"
                },
                "returnParameters": {
                  "id": 356,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 355,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 369,
                      "src": "4275:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 354,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4275:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4274:9:1"
                },
                "scope": 464,
                "src": "4217:150:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 390,
                  "nodeType": "Block",
                  "src": "4887:81:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 380,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 374,
                              "src": "4905:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4909:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4905:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
                            "id": 383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4912:26:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                              "typeString": "literal_string \"SafeMath: modulo by zero\""
                            },
                            "value": "SafeMath: modulo by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                              "typeString": "literal_string \"SafeMath: modulo by zero\""
                            }
                          ],
                          "id": 379,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4897:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4897:42:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 385,
                      "nodeType": "ExpressionStatement",
                      "src": "4897:42:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 386,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 372,
                          "src": "4956:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 387,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 374,
                          "src": "4960:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4956:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 378,
                      "id": 389,
                      "nodeType": "Return",
                      "src": "4949:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 370,
                  "nodeType": "StructuredDocumentation",
                  "src": "4373:442:1",
                  "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                },
                "id": 391,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mod",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 375,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 372,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 391,
                      "src": "4833:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 371,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4833:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 374,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 391,
                      "src": "4844:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 373,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4844:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4832:22:1"
                },
                "returnParameters": {
                  "id": 378,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 377,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 391,
                      "src": "4878:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 376,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4878:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4877:9:1"
                },
                "scope": 464,
                "src": "4820:148:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 414,
                  "nodeType": "Block",
                  "src": "5527:68:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 404,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "5545:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 405,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "5550:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5545:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 407,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 398,
                            "src": "5553:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 403,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5537:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5537:29:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 409,
                      "nodeType": "ExpressionStatement",
                      "src": "5537:29:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 410,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 394,
                          "src": "5583:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 411,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 396,
                          "src": "5587:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5583:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 402,
                      "id": 413,
                      "nodeType": "Return",
                      "src": "5576:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 392,
                  "nodeType": "StructuredDocumentation",
                  "src": "4974:453:1",
                  "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                },
                "id": 415,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 399,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 394,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 415,
                      "src": "5445:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5445:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 396,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 415,
                      "src": "5456:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 395,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5456:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 398,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 415,
                      "src": "5467:26:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 397,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5467:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5444:50:1"
                },
                "returnParameters": {
                  "id": 402,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 401,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 415,
                      "src": "5518:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 400,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5518:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5517:9:1"
                },
                "scope": 464,
                "src": "5432:163:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 438,
                  "nodeType": "Block",
                  "src": "6347:67:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 428,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 420,
                              "src": "6365:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6369:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6365:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 431,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 422,
                            "src": "6372:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 427,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6357:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6357:28:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 433,
                      "nodeType": "ExpressionStatement",
                      "src": "6357:28:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 434,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "6402:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 435,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 420,
                          "src": "6406:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6402:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 426,
                      "id": 437,
                      "nodeType": "Return",
                      "src": "6395:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 416,
                  "nodeType": "StructuredDocumentation",
                  "src": "5601:646:1",
                  "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                },
                "id": 439,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "div",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 423,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 418,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 439,
                      "src": "6265:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6265:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 420,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 439,
                      "src": "6276:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 419,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6276:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 422,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 439,
                      "src": "6287:26:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 421,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "6287:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6264:50:1"
                },
                "returnParameters": {
                  "id": 426,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 425,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 439,
                      "src": "6338:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 424,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6338:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6337:9:1"
                },
                "scope": 464,
                "src": "6252:162:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 462,
                  "nodeType": "Block",
                  "src": "7155:67:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 452,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 444,
                              "src": "7173:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7177:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7173:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 455,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 446,
                            "src": "7180:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 451,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7165:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7165:28:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 457,
                      "nodeType": "ExpressionStatement",
                      "src": "7165:28:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 458,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 442,
                          "src": "7210:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 459,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 444,
                          "src": "7214:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7210:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 450,
                      "id": 461,
                      "nodeType": "Return",
                      "src": "7203:12:1"
                    }
                  ]
                },
                "documentation": {
                  "id": 440,
                  "nodeType": "StructuredDocumentation",
                  "src": "6420:635:1",
                  "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                },
                "id": 463,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mod",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 447,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 442,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 463,
                      "src": "7073:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 441,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7073:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 444,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 463,
                      "src": "7084:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 443,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7084:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 446,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 463,
                      "src": "7095:26:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 445,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7095:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7072:50:1"
                },
                "returnParameters": {
                  "id": 450,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 449,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 463,
                      "src": "7146:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 448,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7146:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7145:9:1"
                },
                "scope": 464,
                "src": "7060:162:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 465,
            "src": "630:6594:1"
          }
        ],
        "src": "33:7192:1"
      }
    },
    "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "exportedSymbols": {
          "ERC20": [
            967
          ]
        },
        "id": 968,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 466,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:2"
          },
          {
            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
            "file": "../../utils/Context.sol",
            "id": 467,
            "nodeType": "ImportDirective",
            "scope": 968,
            "sourceUnit": 1578,
            "src": "66:33:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "./IERC20.sol",
            "id": 468,
            "nodeType": "ImportDirective",
            "scope": 968,
            "sourceUnit": 1046,
            "src": "100:22:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "../../math/SafeMath.sol",
            "id": 469,
            "nodeType": "ImportDirective",
            "scope": 968,
            "sourceUnit": 465,
            "src": "123:33:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 471,
                  "name": "Context",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1577,
                  "src": "1339:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Context_$1577",
                    "typeString": "contract Context"
                  }
                },
                "id": 472,
                "nodeType": "InheritanceSpecifier",
                "src": "1339:7:2"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 473,
                  "name": "IERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1045,
                  "src": "1348:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$1045",
                    "typeString": "contract IERC20"
                  }
                },
                "id": 474,
                "nodeType": "InheritanceSpecifier",
                "src": "1348:6:2"
              }
            ],
            "contractDependencies": [
              1045,
              1577
            ],
            "contractKind": "contract",
            "documentation": {
              "id": 470,
              "nodeType": "StructuredDocumentation",
              "src": "158:1162:2",
              "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
            },
            "fullyImplemented": true,
            "id": 967,
            "linearizedBaseContracts": [
              967,
              1045,
              1577
            ],
            "name": "ERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 477,
                "libraryName": {
                  "contractScope": null,
                  "id": 475,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "1367:8:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "1361:27:2",
                "typeName": {
                  "id": 476,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1380:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "id": 481,
                "mutability": "mutable",
                "name": "_balances",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1394:46:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 480,
                  "keyType": {
                    "id": 478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1403:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1394:28:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 479,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1414:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 487,
                "mutability": "mutable",
                "name": "_allowances",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1447:69:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 486,
                  "keyType": {
                    "id": 482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1456:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1447:49:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 485,
                    "keyType": {
                      "id": 483,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1476:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1467:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 484,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1487:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 489,
                "mutability": "mutable",
                "name": "_totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1523:28:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 488,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1523:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 491,
                "mutability": "mutable",
                "name": "_name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1558:20:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 490,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1558:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 493,
                "mutability": "mutable",
                "name": "_symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1584:22:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 492,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1584:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 495,
                "mutability": "mutable",
                "name": "_decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 967,
                "src": "1612:23:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 494,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1612:5:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 515,
                  "nodeType": "Block",
                  "src": "2022:81:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 503,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 491,
                          "src": "2032:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 504,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 498,
                          "src": "2040:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "2032:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 506,
                      "nodeType": "ExpressionStatement",
                      "src": "2032:13:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 507,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 493,
                          "src": "2055:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 508,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 500,
                          "src": "2065:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "2055:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 510,
                      "nodeType": "ExpressionStatement",
                      "src": "2055:17:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 511,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 495,
                          "src": "2082:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "3138",
                          "id": 512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2094:2:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "src": "2082:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 514,
                      "nodeType": "ExpressionStatement",
                      "src": "2082:14:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 496,
                  "nodeType": "StructuredDocumentation",
                  "src": "1642:311:2",
                  "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."
                },
                "id": 516,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 501,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 498,
                      "mutability": "mutable",
                      "name": "name_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 516,
                      "src": "1971:19:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 497,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1971:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 500,
                      "mutability": "mutable",
                      "name": "symbol_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 516,
                      "src": "1992:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 499,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1992:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1970:44:2"
                },
                "returnParameters": {
                  "id": 502,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2022:0:2"
                },
                "scope": 967,
                "src": "1958:145:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 524,
                  "nodeType": "Block",
                  "src": "2228:29:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 522,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 491,
                        "src": "2245:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "functionReturnParameters": 521,
                      "id": 523,
                      "nodeType": "Return",
                      "src": "2238:12:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 517,
                  "nodeType": "StructuredDocumentation",
                  "src": "2109:54:2",
                  "text": " @dev Returns the name of the token."
                },
                "functionSelector": "06fdde03",
                "id": 525,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 518,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2181:2:2"
                },
                "returnParameters": {
                  "id": 521,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 520,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 525,
                      "src": "2213:13:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 519,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2213:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2212:15:2"
                },
                "scope": 967,
                "src": "2168:89:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 533,
                  "nodeType": "Block",
                  "src": "2432:31:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 531,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 493,
                        "src": "2449:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "functionReturnParameters": 530,
                      "id": 532,
                      "nodeType": "Return",
                      "src": "2442:14:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 526,
                  "nodeType": "StructuredDocumentation",
                  "src": "2263:102:2",
                  "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                },
                "functionSelector": "95d89b41",
                "id": 534,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 527,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2385:2:2"
                },
                "returnParameters": {
                  "id": 530,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 529,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 534,
                      "src": "2417:13:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 528,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2417:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2416:15:2"
                },
                "scope": 967,
                "src": "2370:93:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 542,
                  "nodeType": "Block",
                  "src": "3142:33:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 540,
                        "name": "_decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 495,
                        "src": "3159:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "functionReturnParameters": 539,
                      "id": 541,
                      "nodeType": "Return",
                      "src": "3152:16:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 535,
                  "nodeType": "StructuredDocumentation",
                  "src": "2469:612:2",
                  "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                },
                "functionSelector": "313ce567",
                "id": 543,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 536,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3103:2:2"
                },
                "returnParameters": {
                  "id": 539,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 538,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 543,
                      "src": "3135:5:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 537,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3135:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3134:7:2"
                },
                "scope": 967,
                "src": "3086:89:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  976
                ],
                "body": {
                  "id": 552,
                  "nodeType": "Block",
                  "src": "3305:36:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 550,
                        "name": "_totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 489,
                        "src": "3322:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 549,
                      "id": 551,
                      "nodeType": "Return",
                      "src": "3315:19:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 544,
                  "nodeType": "StructuredDocumentation",
                  "src": "3181:49:2",
                  "text": " @dev See {IERC20-totalSupply}."
                },
                "functionSelector": "18160ddd",
                "id": 553,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 546,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3278:8:2"
                },
                "parameters": {
                  "id": 545,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3255:2:2"
                },
                "returnParameters": {
                  "id": 549,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 548,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 553,
                      "src": "3296:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 547,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3296:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3295:9:2"
                },
                "scope": 967,
                "src": "3235:106:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  984
                ],
                "body": {
                  "id": 566,
                  "nodeType": "Block",
                  "src": "3482:42:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 562,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 481,
                          "src": "3499:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 563,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 556,
                          "src": "3509:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3499:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 561,
                      "id": 565,
                      "nodeType": "Return",
                      "src": "3492:25:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 554,
                  "nodeType": "StructuredDocumentation",
                  "src": "3347:47:2",
                  "text": " @dev See {IERC20-balanceOf}."
                },
                "functionSelector": "70a08231",
                "id": 567,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 558,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3455:8:2"
                },
                "parameters": {
                  "id": 557,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 556,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 567,
                      "src": "3418:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 555,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3418:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3417:17:2"
                },
                "returnParameters": {
                  "id": 561,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 560,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 567,
                      "src": "3473:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 559,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3473:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3472:9:2"
                },
                "scope": 967,
                "src": "3399:125:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  994
                ],
                "body": {
                  "id": 587,
                  "nodeType": "Block",
                  "src": "3819:80:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 579,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "3839:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3839:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 581,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 570,
                            "src": "3853:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 582,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 572,
                            "src": "3864:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 578,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 788,
                          "src": "3829:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3829:42:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 584,
                      "nodeType": "ExpressionStatement",
                      "src": "3829:42:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3888:4:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 577,
                      "id": 586,
                      "nodeType": "Return",
                      "src": "3881:11:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 568,
                  "nodeType": "StructuredDocumentation",
                  "src": "3530:192:2",
                  "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                },
                "functionSelector": "a9059cbb",
                "id": 588,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 574,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3795:8:2"
                },
                "parameters": {
                  "id": 573,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 570,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 588,
                      "src": "3745:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 569,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3745:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 572,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 588,
                      "src": "3764:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 571,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3764:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3744:35:2"
                },
                "returnParameters": {
                  "id": 577,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 576,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 588,
                      "src": "3813:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 575,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3813:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3812:6:2"
                },
                "scope": 967,
                "src": "3727:172:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  1004
                ],
                "body": {
                  "id": 605,
                  "nodeType": "Block",
                  "src": "4055:51:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 599,
                            "name": "_allowances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 487,
                            "src": "4072:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                              "typeString": "mapping(address => mapping(address => uint256))"
                            }
                          },
                          "id": 601,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 600,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 591,
                            "src": "4084:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4072:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 603,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 602,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 593,
                          "src": "4091:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4072:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 598,
                      "id": 604,
                      "nodeType": "Return",
                      "src": "4065:34:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 589,
                  "nodeType": "StructuredDocumentation",
                  "src": "3905:47:2",
                  "text": " @dev See {IERC20-allowance}."
                },
                "functionSelector": "dd62ed3e",
                "id": 606,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 595,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4028:8:2"
                },
                "parameters": {
                  "id": 594,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 591,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 606,
                      "src": "3976:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 590,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3976:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 593,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 606,
                      "src": "3991:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 592,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3991:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3975:32:2"
                },
                "returnParameters": {
                  "id": 598,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 597,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 606,
                      "src": "4046:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 596,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4046:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4045:9:2"
                },
                "scope": 967,
                "src": "3957:149:2",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  1014
                ],
                "body": {
                  "id": 626,
                  "nodeType": "Block",
                  "src": "4333:77:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 618,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "4352:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4352:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 620,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "4366:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 621,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "4375:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 617,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 944,
                          "src": "4343:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4343:39:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 623,
                      "nodeType": "ExpressionStatement",
                      "src": "4343:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4399:4:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 616,
                      "id": 625,
                      "nodeType": "Return",
                      "src": "4392:11:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 607,
                  "nodeType": "StructuredDocumentation",
                  "src": "4112:127:2",
                  "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
                },
                "functionSelector": "095ea7b3",
                "id": 627,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 613,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4309:8:2"
                },
                "parameters": {
                  "id": 612,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 609,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 627,
                      "src": "4261:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4261:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 611,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 627,
                      "src": "4278:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 610,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4278:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4260:33:2"
                },
                "returnParameters": {
                  "id": 616,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 615,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 627,
                      "src": "4327:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 614,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4327:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4326:6:2"
                },
                "scope": 967,
                "src": "4244:166:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  1026
                ],
                "body": {
                  "id": 664,
                  "nodeType": "Block",
                  "src": "4989:205:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 641,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "5009:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 642,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "5017:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 643,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 634,
                            "src": "5028:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 640,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 788,
                          "src": "4999:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4999:36:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 645,
                      "nodeType": "ExpressionStatement",
                      "src": "4999:36:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 647,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "5054:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 648,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "5062:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5062:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 657,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 634,
                                "src": "5114:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                "id": 658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5122:42:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                },
                                "value": "ERC20: transfer amount exceeds allowance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 650,
                                    "name": "_allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 487,
                                    "src": "5076:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 652,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 651,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 630,
                                    "src": "5088:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5076:19:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 655,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 653,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1565,
                                    "src": "5096:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 654,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5096:12:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5076:33:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 415,
                              "src": "5076:37:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5076:89:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 646,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 944,
                          "src": "5045:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5045:121:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 661,
                      "nodeType": "ExpressionStatement",
                      "src": "5045:121:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5183:4:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 639,
                      "id": 663,
                      "nodeType": "Return",
                      "src": "5176:11:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 628,
                  "nodeType": "StructuredDocumentation",
                  "src": "4416:456:2",
                  "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
                },
                "functionSelector": "23b872dd",
                "id": 665,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 636,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4965:8:2"
                },
                "parameters": {
                  "id": 635,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 630,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 665,
                      "src": "4899:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 629,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4899:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 632,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 665,
                      "src": "4915:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 631,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4915:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 634,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 665,
                      "src": "4934:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 633,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4934:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4898:51:2"
                },
                "returnParameters": {
                  "id": 639,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 638,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 665,
                      "src": "4983:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 637,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4983:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4982:6:2"
                },
                "scope": 967,
                "src": "4877:317:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 692,
                  "nodeType": "Block",
                  "src": "5683:121:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 676,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "5702:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5702:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 678,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "5716:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 686,
                                "name": "addedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 670,
                                "src": "5764:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 679,
                                    "name": "_allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 487,
                                    "src": "5725:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 682,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 680,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1565,
                                      "src": "5737:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5737:12:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5725:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 684,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 683,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 668,
                                  "src": "5751:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5725:34:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 291,
                              "src": "5725:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5725:50:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 675,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 944,
                          "src": "5693:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5693:83:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 689,
                      "nodeType": "ExpressionStatement",
                      "src": "5693:83:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5793:4:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 674,
                      "id": 691,
                      "nodeType": "Return",
                      "src": "5786:11:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 666,
                  "nodeType": "StructuredDocumentation",
                  "src": "5200:384:2",
                  "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                },
                "functionSelector": "39509351",
                "id": 693,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "increaseAllowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 671,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 668,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 693,
                      "src": "5616:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 667,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5616:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 670,
                      "mutability": "mutable",
                      "name": "addedValue",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 693,
                      "src": "5633:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 669,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5633:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5615:37:2"
                },
                "returnParameters": {
                  "id": 674,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 673,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 693,
                      "src": "5677:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 672,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5677:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5676:6:2"
                },
                "scope": 967,
                "src": "5589:215:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 721,
                  "nodeType": "Block",
                  "src": "6390:167:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 704,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "6409:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6409:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 706,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "6423:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 714,
                                "name": "subtractedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 698,
                                "src": "6471:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                "id": 715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6488:39:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                  "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                },
                                "value": "ERC20: decreased allowance below zero"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                  "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 707,
                                    "name": "_allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 487,
                                    "src": "6432:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 710,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 708,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1565,
                                      "src": "6444:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6444:12:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6432:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 712,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 711,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 696,
                                  "src": "6458:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6432:34:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 415,
                              "src": "6432:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6432:96:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 703,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 944,
                          "src": "6400:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6400:129:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 718,
                      "nodeType": "ExpressionStatement",
                      "src": "6400:129:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6546:4:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 702,
                      "id": 720,
                      "nodeType": "Return",
                      "src": "6539:11:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 694,
                  "nodeType": "StructuredDocumentation",
                  "src": "5810:476:2",
                  "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                },
                "functionSelector": "a457c2d7",
                "id": 722,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decreaseAllowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 699,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 696,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 722,
                      "src": "6318:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 695,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6318:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 698,
                      "mutability": "mutable",
                      "name": "subtractedValue",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 722,
                      "src": "6335:23:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 697,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6335:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6317:42:2"
                },
                "returnParameters": {
                  "id": 702,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 701,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 722,
                      "src": "6384:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 700,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6384:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6383:6:2"
                },
                "scope": 967,
                "src": "6291:266:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 787,
                  "nodeType": "Block",
                  "src": "7118:443:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 733,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "7136:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7154:1:2",
                                  "subdenomination": null,
                                  "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": 735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7146:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 734,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7146:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7146:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "7136:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                            "id": 739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7158:39:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                              "typeString": "literal_string \"ERC20: transfer from the zero address\""
                            },
                            "value": "ERC20: transfer from the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                              "typeString": "literal_string \"ERC20: transfer from the zero address\""
                            }
                          ],
                          "id": 732,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7128:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7128:70:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 741,
                      "nodeType": "ExpressionStatement",
                      "src": "7128:70:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 743,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 727,
                              "src": "7216:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7237:1:2",
                                  "subdenomination": null,
                                  "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": 745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7229:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 744,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7229:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7229:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "7216:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                            "id": 749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7241:37:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                              "typeString": "literal_string \"ERC20: transfer to the zero address\""
                            },
                            "value": "ERC20: transfer to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                              "typeString": "literal_string \"ERC20: transfer to the zero address\""
                            }
                          ],
                          "id": 742,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7208:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7208:71:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 751,
                      "nodeType": "ExpressionStatement",
                      "src": "7208:71:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 753,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 725,
                            "src": "7311:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 754,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 727,
                            "src": "7319:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 755,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 729,
                            "src": "7330:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 752,
                          "name": "_beforeTokenTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 966,
                          "src": "7290:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7290:47:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 757,
                      "nodeType": "ExpressionStatement",
                      "src": "7290:47:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 768,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 758,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "7348:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 760,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 759,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 725,
                            "src": "7358:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7348:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 765,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 729,
                              "src": "7390:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                              "id": 766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7398:40:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              },
                              "value": "ERC20: transfer amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 761,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "7368:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 763,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 762,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 725,
                                "src": "7378:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7368:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 415,
                            "src": "7368:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7368:71:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7348:91:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 769,
                      "nodeType": "ExpressionStatement",
                      "src": "7348:91:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 770,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "7449:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 772,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 771,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 727,
                            "src": "7459:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7449:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 777,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 729,
                              "src": "7497:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 773,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "7472:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 775,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 774,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 727,
                                "src": "7482:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7472:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "7472:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7472:32:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7449:55:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 780,
                      "nodeType": "ExpressionStatement",
                      "src": "7449:55:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 782,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 725,
                            "src": "7528:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 783,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 727,
                            "src": "7536:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 784,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 729,
                            "src": "7547:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 781,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1035,
                          "src": "7519:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7519:35:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 786,
                      "nodeType": "EmitStatement",
                      "src": "7514:40:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 723,
                  "nodeType": "StructuredDocumentation",
                  "src": "6563:463:2",
                  "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                },
                "id": 788,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 730,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 725,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 788,
                      "src": "7050:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 724,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7050:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 727,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 788,
                      "src": "7066:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 726,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7066:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 729,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 788,
                      "src": "7085:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 728,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7085:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7049:51:2"
                },
                "returnParameters": {
                  "id": 731,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7118:0:2"
                },
                "scope": 967,
                "src": "7031:530:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 842,
                  "nodeType": "Block",
                  "src": "7897:305:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 797,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 791,
                              "src": "7915:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7934:1:2",
                                  "subdenomination": null,
                                  "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": 799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7926:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 798,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7926:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7926:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "7915:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                            "id": 803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7938:33:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                              "typeString": "literal_string \"ERC20: mint to the zero address\""
                            },
                            "value": "ERC20: mint to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                              "typeString": "literal_string \"ERC20: mint to the zero address\""
                            }
                          ],
                          "id": 796,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7907:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7907:65:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 805,
                      "nodeType": "ExpressionStatement",
                      "src": "7907:65:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8012:1:2",
                                "subdenomination": null,
                                "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": 808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8004:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 807,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8004:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8004:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 811,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 791,
                            "src": "8016:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 812,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 793,
                            "src": "8025:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 806,
                          "name": "_beforeTokenTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 966,
                          "src": "7983:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7983:49:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 814,
                      "nodeType": "ExpressionStatement",
                      "src": "7983:49:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 815,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 489,
                          "src": "8043:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 818,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 793,
                              "src": "8075:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 816,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 489,
                              "src": "8058:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "8058:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8058:24:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8043:39:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 821,
                      "nodeType": "ExpressionStatement",
                      "src": "8043:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 822,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "8092:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 824,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 823,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 791,
                            "src": "8102:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "8092:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 829,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 793,
                              "src": "8136:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 825,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "8113:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 827,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 826,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 791,
                                "src": "8123:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8113:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "8113:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8113:30:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8092:51:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 832,
                      "nodeType": "ExpressionStatement",
                      "src": "8092:51:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8175:1:2",
                                "subdenomination": null,
                                "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": 835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8167:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 834,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8167:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8167:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 838,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 791,
                            "src": "8179:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 839,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 793,
                            "src": "8188:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 833,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1035,
                          "src": "8158:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8158:37:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 841,
                      "nodeType": "EmitStatement",
                      "src": "8153:42:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 789,
                  "nodeType": "StructuredDocumentation",
                  "src": "7567:260:2",
                  "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."
                },
                "id": 843,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 794,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 791,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 843,
                      "src": "7847:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 790,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7847:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 793,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 843,
                      "src": "7864:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 792,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7864:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7846:33:2"
                },
                "returnParameters": {
                  "id": 795,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7897:0:2"
                },
                "scope": 967,
                "src": "7832:370:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 898,
                  "nodeType": "Block",
                  "src": "8587:345:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 852,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "8605:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 855,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8624:1:2",
                                  "subdenomination": null,
                                  "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": 854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8616:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 853,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8616:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8616:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "8605:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                            "id": 858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8628:35:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                              "typeString": "literal_string \"ERC20: burn from the zero address\""
                            },
                            "value": "ERC20: burn from the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                              "typeString": "literal_string \"ERC20: burn from the zero address\""
                            }
                          ],
                          "id": 851,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8597:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8597:67:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 860,
                      "nodeType": "ExpressionStatement",
                      "src": "8597:67:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 862,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "8696:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8713:1:2",
                                "subdenomination": null,
                                "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": 864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8705:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 863,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8705:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8705:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 867,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 848,
                            "src": "8717:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 861,
                          "name": "_beforeTokenTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 966,
                          "src": "8675:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8675:49:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 869,
                      "nodeType": "ExpressionStatement",
                      "src": "8675:49:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 870,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "8735:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 872,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 871,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "8745:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "8735:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 877,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 848,
                              "src": "8779:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8787:36:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              },
                              "value": "ERC20: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 873,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "8756:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 875,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 874,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 846,
                                "src": "8766:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8756:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 415,
                            "src": "8756:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8756:68:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8735:89:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 881,
                      "nodeType": "ExpressionStatement",
                      "src": "8735:89:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 882,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 489,
                          "src": "8834:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 885,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 848,
                              "src": "8866:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 883,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 489,
                              "src": "8849:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 313,
                            "src": "8849:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8849:24:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8834:39:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 888,
                      "nodeType": "ExpressionStatement",
                      "src": "8834:39:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 890,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "8897:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8914:1:2",
                                "subdenomination": null,
                                "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": 892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8906:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 891,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8906:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8906:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 895,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 848,
                            "src": "8918:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 889,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1035,
                          "src": "8888:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 896,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8888:37:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 897,
                      "nodeType": "EmitStatement",
                      "src": "8883:42:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 844,
                  "nodeType": "StructuredDocumentation",
                  "src": "8208:309:2",
                  "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                },
                "id": 899,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 849,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 846,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 899,
                      "src": "8537:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 845,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8537:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 848,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 899,
                      "src": "8554:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 847,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8554:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8536:33:2"
                },
                "returnParameters": {
                  "id": 850,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8587:0:2"
                },
                "scope": 967,
                "src": "8522:410:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 943,
                  "nodeType": "Block",
                  "src": "9438:257:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 910,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "9456:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 913,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9473:1:2",
                                  "subdenomination": null,
                                  "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": 912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9465:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 911,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9465:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9465:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9456:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                            "id": 916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9477:38:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                              "typeString": "literal_string \"ERC20: approve from the zero address\""
                            },
                            "value": "ERC20: approve from the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                              "typeString": "literal_string \"ERC20: approve from the zero address\""
                            }
                          ],
                          "id": 909,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9448:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9448:68:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 918,
                      "nodeType": "ExpressionStatement",
                      "src": "9448:68:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 920,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 904,
                              "src": "9534:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9553:1:2",
                                  "subdenomination": null,
                                  "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": 922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9545:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 921,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9545:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9545:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9534:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                            "id": 926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9557:36:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                              "typeString": "literal_string \"ERC20: approve to the zero address\""
                            },
                            "value": "ERC20: approve to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                              "typeString": "literal_string \"ERC20: approve to the zero address\""
                            }
                          ],
                          "id": 919,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9526:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9526:68:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 928,
                      "nodeType": "ExpressionStatement",
                      "src": "9526:68:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 929,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 487,
                              "src": "9605:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 932,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 930,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "9617:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9605:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 933,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 904,
                            "src": "9624:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9605:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 934,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 906,
                          "src": "9635:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9605:36:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 936,
                      "nodeType": "ExpressionStatement",
                      "src": "9605:36:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 938,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "9665:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 939,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 904,
                            "src": "9672:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 940,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 906,
                            "src": "9681:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 937,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1044,
                          "src": "9656:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9656:32:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 942,
                      "nodeType": "EmitStatement",
                      "src": "9651:37:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 900,
                  "nodeType": "StructuredDocumentation",
                  "src": "8938:412:2",
                  "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                },
                "id": 944,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 907,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 902,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 944,
                      "src": "9373:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 901,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9373:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 904,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 944,
                      "src": "9388:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 903,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9388:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 906,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 944,
                      "src": "9405:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 905,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9405:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9372:48:2"
                },
                "returnParameters": {
                  "id": 908,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9438:0:2"
                },
                "scope": 967,
                "src": "9355:340:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 954,
                  "nodeType": "Block",
                  "src": "10076:38:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 952,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 950,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 495,
                          "src": "10086:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 951,
                          "name": "decimals_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 947,
                          "src": "10098:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "10086:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 953,
                      "nodeType": "ExpressionStatement",
                      "src": "10086:21:2"
                    }
                  ]
                },
                "documentation": {
                  "id": 945,
                  "nodeType": "StructuredDocumentation",
                  "src": "9701:312:2",
                  "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."
                },
                "id": 955,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_setupDecimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 948,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 947,
                      "mutability": "mutable",
                      "name": "decimals_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 955,
                      "src": "10042:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 946,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "10042:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10041:17:2"
                },
                "returnParameters": {
                  "id": 949,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10076:0:2"
                },
                "scope": 967,
                "src": "10018:96:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 965,
                  "nodeType": "Block",
                  "src": "10790:3:2",
                  "statements": []
                },
                "documentation": {
                  "id": 956,
                  "nodeType": "StructuredDocumentation",
                  "src": "10120:576:2",
                  "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                },
                "id": 966,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_beforeTokenTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 963,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 958,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 966,
                      "src": "10731:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 957,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10731:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 960,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 966,
                      "src": "10745:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 959,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10745:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 962,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 966,
                      "src": "10757:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 961,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10757:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10730:42:2"
                },
                "returnParameters": {
                  "id": 964,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10790:0:2"
                },
                "scope": 967,
                "src": "10701:92:2",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              }
            ],
            "scope": 968,
            "src": "1321:9474:2"
          }
        ],
        "src": "33:10763:2"
      }
    },
    "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "exportedSymbols": {
          "IERC20": [
            1045
          ]
        },
        "id": 1046,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 969,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:3"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 970,
              "nodeType": "StructuredDocumentation",
              "src": "66:70:3",
              "text": " @dev Interface of the ERC20 standard as defined in the EIP."
            },
            "fullyImplemented": false,
            "id": 1045,
            "linearizedBaseContracts": [
              1045
            ],
            "name": "IERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": {
                  "id": 971,
                  "nodeType": "StructuredDocumentation",
                  "src": "160:66:3",
                  "text": " @dev Returns the amount of tokens in existence."
                },
                "functionSelector": "18160ddd",
                "id": 976,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 972,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "251:2:3"
                },
                "returnParameters": {
                  "id": 975,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 974,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 976,
                      "src": "277:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 973,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "277:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "276:9:3"
                },
                "scope": 1045,
                "src": "231:55:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": {
                  "id": 977,
                  "nodeType": "StructuredDocumentation",
                  "src": "292:72:3",
                  "text": " @dev Returns the amount of tokens owned by `account`."
                },
                "functionSelector": "70a08231",
                "id": 984,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 980,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 979,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 984,
                      "src": "388:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 978,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "388:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "387:17:3"
                },
                "returnParameters": {
                  "id": 983,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 982,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 984,
                      "src": "428:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 981,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "428:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "427:9:3"
                },
                "scope": 1045,
                "src": "369:68:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": {
                  "id": 985,
                  "nodeType": "StructuredDocumentation",
                  "src": "443:209:3",
                  "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                },
                "functionSelector": "a9059cbb",
                "id": 994,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 990,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 987,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 994,
                      "src": "675:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 986,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "675:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 989,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 994,
                      "src": "694:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 988,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "694:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "674:35:3"
                },
                "returnParameters": {
                  "id": 993,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 992,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 994,
                      "src": "728:4:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 991,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "728:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "727:6:3"
                },
                "scope": 1045,
                "src": "657:77:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": {
                  "id": 995,
                  "nodeType": "StructuredDocumentation",
                  "src": "740:264:3",
                  "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                },
                "functionSelector": "dd62ed3e",
                "id": 1004,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1000,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 997,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1004,
                      "src": "1028:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 996,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1028:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 999,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1004,
                      "src": "1043:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 998,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1043:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1027:32:3"
                },
                "returnParameters": {
                  "id": 1003,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1002,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1004,
                      "src": "1083:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1001,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1083:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1082:9:3"
                },
                "scope": 1045,
                "src": "1009:83:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": {
                  "id": 1005,
                  "nodeType": "StructuredDocumentation",
                  "src": "1098:642:3",
                  "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                },
                "functionSelector": "095ea7b3",
                "id": 1014,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1010,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1007,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1014,
                      "src": "1762:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1006,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1762:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1009,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1014,
                      "src": "1779:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1008,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1779:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1761:33:3"
                },
                "returnParameters": {
                  "id": 1013,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1012,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1014,
                      "src": "1813:4:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1011,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1813:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1812:6:3"
                },
                "scope": 1045,
                "src": "1745:74:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": {
                  "id": 1015,
                  "nodeType": "StructuredDocumentation",
                  "src": "1825:296:3",
                  "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                },
                "functionSelector": "23b872dd",
                "id": 1026,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1022,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1017,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1026,
                      "src": "2148:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1016,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2148:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1019,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1026,
                      "src": "2164:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1018,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2164:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1021,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1026,
                      "src": "2183:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1020,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2183:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2147:51:3"
                },
                "returnParameters": {
                  "id": 1025,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1024,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1026,
                      "src": "2217:4:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1023,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2217:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2216:6:3"
                },
                "scope": 1045,
                "src": "2126:97:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 1027,
                  "nodeType": "StructuredDocumentation",
                  "src": "2229:158:3",
                  "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                },
                "id": 1035,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1034,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1029,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1035,
                      "src": "2407:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1028,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2407:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1031,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1035,
                      "src": "2429:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1030,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2429:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1033,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1035,
                      "src": "2449:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1032,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2449:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2406:57:3"
                },
                "src": "2392:72:3"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 1036,
                  "nodeType": "StructuredDocumentation",
                  "src": "2470:148:3",
                  "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                },
                "id": 1044,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1043,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1038,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1044,
                      "src": "2638:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1037,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2638:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1040,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1044,
                      "src": "2661:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1039,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2661:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1042,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1044,
                      "src": "2686:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1041,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2686:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2637:63:3"
                },
                "src": "2623:78:3"
              }
            ],
            "scope": 1046,
            "src": "137:2566:3"
          }
        ],
        "src": "33:2671:3"
      }
    },
    "@openzeppelin/contracts/token/ERC20/SafeERC20.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
        "exportedSymbols": {
          "SafeERC20": [
            1258
          ]
        },
        "id": 1259,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1047,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:4"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "./IERC20.sol",
            "id": 1048,
            "nodeType": "ImportDirective",
            "scope": 1259,
            "sourceUnit": 1046,
            "src": "66:22:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "../../math/SafeMath.sol",
            "id": 1049,
            "nodeType": "ImportDirective",
            "scope": 1259,
            "sourceUnit": 465,
            "src": "89:33:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
            "file": "../../utils/Address.sol",
            "id": 1050,
            "nodeType": "ImportDirective",
            "scope": 1259,
            "sourceUnit": 1555,
            "src": "123:33:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": {
              "id": 1051,
              "nodeType": "StructuredDocumentation",
              "src": "158:457:4",
              "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
            },
            "fullyImplemented": true,
            "id": 1258,
            "linearizedBaseContracts": [
              1258
            ],
            "name": "SafeERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 1054,
                "libraryName": {
                  "contractScope": null,
                  "id": 1052,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "646:8:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "640:27:4",
                "typeName": {
                  "id": 1053,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "659:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "id": 1057,
                "libraryName": {
                  "contractScope": null,
                  "id": 1055,
                  "name": "Address",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1554,
                  "src": "678:7:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Address_$1554",
                    "typeString": "library Address"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "672:26:4",
                "typeName": {
                  "id": 1056,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "690:7:4",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              },
              {
                "body": {
                  "id": 1078,
                  "nodeType": "Block",
                  "src": "776:103:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1067,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1059,
                            "src": "806:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1070,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1059,
                                    "src": "836:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1071,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 994,
                                  "src": "836:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "836:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1073,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1061,
                                "src": "861:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1074,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1063,
                                "src": "865:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1068,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "813:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "813:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "813:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1066,
                          "name": "_callOptionalReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1257,
                          "src": "786:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (contract IERC20,bytes memory)"
                          }
                        },
                        "id": 1076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "786:86:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1077,
                      "nodeType": "ExpressionStatement",
                      "src": "786:86:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1079,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1064,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1059,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1079,
                      "src": "726:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1058,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "726:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1061,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1079,
                      "src": "740:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1060,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "740:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1063,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1079,
                      "src": "752:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1062,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "752:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "725:41:4"
                },
                "returnParameters": {
                  "id": 1065,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "776:0:4"
                },
                "scope": 1258,
                "src": "704:175:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1103,
                  "nodeType": "Block",
                  "src": "975:113:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1091,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1081,
                            "src": "1005:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1094,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1081,
                                    "src": "1035:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1026,
                                  "src": "1035:18:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1035:27:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1097,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1083,
                                "src": "1064:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1098,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1085,
                                "src": "1070:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1099,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1087,
                                "src": "1074:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1092,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1012:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1012:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1012:68:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1090,
                          "name": "_callOptionalReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1257,
                          "src": "985:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (contract IERC20,bytes memory)"
                          }
                        },
                        "id": 1101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "985:96:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1102,
                      "nodeType": "ExpressionStatement",
                      "src": "985:96:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1104,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1088,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1081,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1104,
                      "src": "911:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1080,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "911:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1083,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1104,
                      "src": "925:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1082,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "925:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1085,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1104,
                      "src": "939:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1084,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "939:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1087,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1104,
                      "src": "951:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1086,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "951:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "910:55:4"
                },
                "returnParameters": {
                  "id": 1089,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "975:0:4"
                },
                "scope": 1258,
                "src": "885:203:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1146,
                  "nodeType": "Block",
                  "src": "1424:537:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1115,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1111,
                                    "src": "1713:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1722:1:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1713:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1118,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1712:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1123,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "1753:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                              "typeString": "library SafeERC20"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                              "typeString": "library SafeERC20"
                                            }
                                          ],
                                          "id": 1122,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1745:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 1121,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1745:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 1124,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1745:13:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1125,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "1760:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1119,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1107,
                                        "src": "1729:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$1045",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 1120,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allowance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1004,
                                      "src": "1729:15:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address,address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 1126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1729:39:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1772:1:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1729:44:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1129,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1728:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1712:62:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                            "id": 1131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1788:56:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                              "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                            },
                            "value": "SafeERC20: approve from non-zero to non-zero allowance"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                              "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                            }
                          ],
                          "id": 1114,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1704:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1704:150:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1133,
                      "nodeType": "ExpressionStatement",
                      "src": "1704:150:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1135,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1107,
                            "src": "1884:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1138,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1107,
                                    "src": "1914:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1014,
                                  "src": "1914:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1914:22:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1141,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1109,
                                "src": "1938:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1142,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1111,
                                "src": "1947:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1136,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1891:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1891:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1891:62:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1134,
                          "name": "_callOptionalReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1257,
                          "src": "1864:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (contract IERC20,bytes memory)"
                          }
                        },
                        "id": 1144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1864:90:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1145,
                      "nodeType": "ExpressionStatement",
                      "src": "1864:90:4"
                    }
                  ]
                },
                "documentation": {
                  "id": 1105,
                  "nodeType": "StructuredDocumentation",
                  "src": "1094:249:4",
                  "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."
                },
                "id": 1147,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1112,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1107,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1147,
                      "src": "1369:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1106,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "1369:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1109,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1147,
                      "src": "1383:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1108,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1383:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1111,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1147,
                      "src": "1400:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1110,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1400:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1368:46:4"
                },
                "returnParameters": {
                  "id": 1113,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1424:0:4"
                },
                "scope": 1258,
                "src": "1348:613:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1182,
                  "nodeType": "Block",
                  "src": "2053:197:4",
                  "statements": [
                    {
                      "assignments": [
                        1157
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1157,
                          "mutability": "mutable",
                          "name": "newAllowance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1182,
                          "src": "2063:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1156,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2063:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1169,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1167,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1153,
                            "src": "2130:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1162,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2110:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                      "typeString": "library SafeERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                      "typeString": "library SafeERC20"
                                    }
                                  ],
                                  "id": 1161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2102:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1160,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2102:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2102:13:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1164,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "2117:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1158,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1149,
                                "src": "2086:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 1159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allowance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1004,
                              "src": "2086:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 1165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2086:39:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 291,
                          "src": "2086:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2086:50:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2063:73:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1171,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1149,
                            "src": "2166:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1174,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1149,
                                    "src": "2196:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1175,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1014,
                                  "src": "2196:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2196:22:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1177,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "2220:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "newAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1157,
                                "src": "2229:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1172,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2173:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2173:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2173:69:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1170,
                          "name": "_callOptionalReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1257,
                          "src": "2146:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (contract IERC20,bytes memory)"
                          }
                        },
                        "id": 1180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2146:97:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1181,
                      "nodeType": "ExpressionStatement",
                      "src": "2146:97:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1183,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeIncreaseAllowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1154,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1149,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1183,
                      "src": "1998:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1148,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "1998:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1151,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1183,
                      "src": "2012:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1150,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2012:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1153,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1183,
                      "src": "2029:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2029:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1997:46:4"
                },
                "returnParameters": {
                  "id": 1155,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2053:0:4"
                },
                "scope": 1258,
                "src": "1967:283:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1219,
                  "nodeType": "Block",
                  "src": "2342:242:4",
                  "statements": [
                    {
                      "assignments": [
                        1193
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1193,
                          "mutability": "mutable",
                          "name": "newAllowance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1219,
                          "src": "2352:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1192,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2352:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1206,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1203,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1189,
                            "src": "2419:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                            "id": 1204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2426:43:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                              "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                            },
                            "value": "SafeERC20: decreased allowance below zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                              "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1198,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2399:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                      "typeString": "library SafeERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SafeERC20_$1258",
                                      "typeString": "library SafeERC20"
                                    }
                                  ],
                                  "id": 1197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2391:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1196,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2391:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2391:13:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1200,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1187,
                                "src": "2406:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1194,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1185,
                                "src": "2375:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 1195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allowance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1004,
                              "src": "2375:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 1201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2375:39:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 415,
                          "src": "2375:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                          }
                        },
                        "id": 1205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2375:95:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2352:118:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1208,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1185,
                            "src": "2500:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1211,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1185,
                                    "src": "2530:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1014,
                                  "src": "2530:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2530:22:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1214,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1187,
                                "src": "2554:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1215,
                                "name": "newAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1193,
                                "src": "2563:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1209,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2507:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2507:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2507:69:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1207,
                          "name": "_callOptionalReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1257,
                          "src": "2480:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (contract IERC20,bytes memory)"
                          }
                        },
                        "id": 1217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2480:97:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1218,
                      "nodeType": "ExpressionStatement",
                      "src": "2480:97:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1220,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeDecreaseAllowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1190,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1185,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1220,
                      "src": "2287:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1184,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "2287:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1187,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1220,
                      "src": "2301:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1186,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2301:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1189,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1220,
                      "src": "2318:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1188,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2318:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2286:46:4"
                },
                "returnParameters": {
                  "id": 1191,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2342:0:4"
                },
                "scope": 1258,
                "src": "2256:328:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1256,
                  "nodeType": "Block",
                  "src": "3037:681:4",
                  "statements": [
                    {
                      "assignments": [
                        1229
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1229,
                          "mutability": "mutable",
                          "name": "returndata",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1256,
                          "src": "3386:23:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1228,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "3386:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1238,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1235,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1225,
                            "src": "3440:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                            "id": 1236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3446:34:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                              "typeString": "literal_string \"SafeERC20: low-level call failed\""
                            },
                            "value": "SafeERC20: low-level call failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                              "typeString": "literal_string \"SafeERC20: low-level call failed\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1232,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1223,
                                "src": "3420:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 1231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3412:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1230,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3412:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3412:14:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "functionCall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1349,
                          "src": "3412:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$",
                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                          }
                        },
                        "id": 1237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3412:69:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3386:95:4"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1239,
                            "name": "returndata",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1229,
                            "src": "3495:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 1240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3495:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3515:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3495:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1255,
                      "nodeType": "IfStatement",
                      "src": "3491:221:4",
                      "trueBody": {
                        "id": 1254,
                        "nodeType": "Block",
                        "src": "3518:194:4",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1246,
                                      "name": "returndata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1229,
                                      "src": "3635:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1248,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3648:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          },
                                          "typeName": {
                                            "id": 1247,
                                            "name": "bool",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3648:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        }
                                      ],
                                      "id": 1249,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3647:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1244,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "3624:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3624:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3624:30:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                  "id": 1251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3656:44:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                    "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                  },
                                  "value": "SafeERC20: ERC20 operation did not succeed"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                    "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                  }
                                ],
                                "id": 1243,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "3616:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 1252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3616:85:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1253,
                            "nodeType": "ExpressionStatement",
                            "src": "3616:85:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 1221,
                  "nodeType": "StructuredDocumentation",
                  "src": "2590:372:4",
                  "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."
                },
                "id": 1257,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_callOptionalReturn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1226,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1223,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "2996:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1222,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "2996:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1225,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3010:17:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1224,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3010:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2995:33:4"
                },
                "returnParameters": {
                  "id": 1227,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3037:0:4"
                },
                "scope": 1258,
                "src": "2967:751:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              }
            ],
            "scope": 1259,
            "src": "616:3104:4"
          }
        ],
        "src": "33:3688:4"
      }
    },
    "@openzeppelin/contracts/utils/Address.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "exportedSymbols": {
          "Address": [
            1554
          ]
        },
        "id": 1555,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1260,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".2",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:5"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": {
              "id": 1261,
              "nodeType": "StructuredDocumentation",
              "src": "66:67:5",
              "text": " @dev Collection of functions related to the address type"
            },
            "fullyImplemented": true,
            "id": 1554,
            "linearizedBaseContracts": [
              1554
            ],
            "name": "Address",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1277,
                  "nodeType": "Block",
                  "src": "792:347:5",
                  "statements": [
                    {
                      "assignments": [
                        1270
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1270,
                          "mutability": "mutable",
                          "name": "size",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1277,
                          "src": "989:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1269,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "989:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1271,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "989:12:5"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "1076:32:5",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "1078:28:5",
                            "value": {
                              "arguments": [
                                {
                                  "name": "account",
                                  "nodeType": "YulIdentifier",
                                  "src": "1098:7:5"
                                }
                              ],
                              "functionName": {
                                "name": "extcodesize",
                                "nodeType": "YulIdentifier",
                                "src": "1086:11:5"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1086:20:5"
                            },
                            "variableNames": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "1078:4:5"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 1264,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1098:7:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1270,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1078:4:5",
                          "valueSize": 1
                        }
                      ],
                      "id": 1272,
                      "nodeType": "InlineAssembly",
                      "src": "1067:41:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1273,
                          "name": "size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1270,
                          "src": "1124:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1131:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1124:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1268,
                      "id": 1276,
                      "nodeType": "Return",
                      "src": "1117:15:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1262,
                  "nodeType": "StructuredDocumentation",
                  "src": "156:565:5",
                  "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="
                },
                "id": 1278,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "isContract",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1265,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1264,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1278,
                      "src": "746:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1263,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "745:17:5"
                },
                "returnParameters": {
                  "id": 1268,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1267,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1278,
                      "src": "786:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1266,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "786:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "785:6:5"
                },
                "scope": 1554,
                "src": "726:413:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1311,
                  "nodeType": "Block",
                  "src": "2127:320:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1289,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2153:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Address_$1554",
                                      "typeString": "library Address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Address_$1554",
                                      "typeString": "library Address"
                                    }
                                  ],
                                  "id": 1288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2145:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1287,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2145:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2145:13:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2145:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1292,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1283,
                              "src": "2170:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2145:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                            "id": 1294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2178:31:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                              "typeString": "literal_string \"Address: insufficient balance\""
                            },
                            "value": "Address: insufficient balance"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                              "typeString": "literal_string \"Address: insufficient balance\""
                            }
                          ],
                          "id": 1286,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2137:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2137:73:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1296,
                      "nodeType": "ExpressionStatement",
                      "src": "2137:73:5"
                    },
                    {
                      "assignments": [
                        1298,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1298,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1311,
                          "src": "2299:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1297,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2299:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 1305,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 1303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2349:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1299,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "2317:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 1300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2317:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 1301,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1283,
                              "src": "2340:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "2317:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2317:35:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2298:54:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1307,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1298,
                            "src": "2370:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                            "id": 1308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2379:60:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                              "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                            },
                            "value": "Address: unable to send value, recipient may have reverted"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                              "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                            }
                          ],
                          "id": 1306,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2362:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2362:78:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1310,
                      "nodeType": "ExpressionStatement",
                      "src": "2362:78:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1279,
                  "nodeType": "StructuredDocumentation",
                  "src": "1145:906:5",
                  "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                },
                "id": 1312,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sendValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1284,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1281,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1312,
                      "src": "2075:25:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 1280,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2075:15:5",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1283,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1312,
                      "src": "2102:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1282,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2102:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2074:43:5"
                },
                "returnParameters": {
                  "id": 1285,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2127:0:5"
                },
                "scope": 1554,
                "src": "2056:391:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1328,
                  "nodeType": "Block",
                  "src": "3277:82:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1323,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "3305:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1324,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1317,
                            "src": "3313:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                            "id": 1325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3319:32:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                              "typeString": "literal_string \"Address: low-level call failed\""
                            },
                            "value": "Address: low-level call failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                              "typeString": "literal_string \"Address: low-level call failed\""
                            }
                          ],
                          "id": 1322,
                          "name": "functionCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1329,
                            1349
                          ],
                          "referencedDeclaration": 1349,
                          "src": "3292:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                          }
                        },
                        "id": 1326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3292:60:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1321,
                      "id": 1327,
                      "nodeType": "Return",
                      "src": "3285:67:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1313,
                  "nodeType": "StructuredDocumentation",
                  "src": "2453:730:5",
                  "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                },
                "id": 1329,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1318,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1315,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "3210:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1314,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3210:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1317,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "3226:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1316,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3226:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3209:35:5"
                },
                "returnParameters": {
                  "id": 1321,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1320,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "3263:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1319,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3263:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3262:14:5"
                },
                "scope": 1554,
                "src": "3188:171:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1348,
                  "nodeType": "Block",
                  "src": "3698:76:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1342,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1332,
                            "src": "3737:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1343,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1334,
                            "src": "3745:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3751:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1336,
                            "src": "3754:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1341,
                          "name": "functionCallWithValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1369,
                            1419
                          ],
                          "referencedDeclaration": 1419,
                          "src": "3715:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                          }
                        },
                        "id": 1346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3715:52:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1340,
                      "id": 1347,
                      "nodeType": "Return",
                      "src": "3708:59:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1330,
                  "nodeType": "StructuredDocumentation",
                  "src": "3365:211:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                },
                "id": 1349,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1337,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1332,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "3603:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1331,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3603:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1334,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "3619:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1333,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3619:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1336,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "3638:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1335,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3638:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3602:63:5"
                },
                "returnParameters": {
                  "id": 1340,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1339,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "3684:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1338,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3684:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3683:14:5"
                },
                "scope": 1554,
                "src": "3581:193:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1368,
                  "nodeType": "Block",
                  "src": "4249:111:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1362,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "4288:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1363,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1354,
                            "src": "4296:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1364,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1356,
                            "src": "4302:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                            "id": 1365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4309:43:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                              "typeString": "literal_string \"Address: low-level call with value failed\""
                            },
                            "value": "Address: low-level call with value failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                              "typeString": "literal_string \"Address: low-level call with value failed\""
                            }
                          ],
                          "id": 1361,
                          "name": "functionCallWithValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1369,
                            1419
                          ],
                          "referencedDeclaration": 1419,
                          "src": "4266:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                          }
                        },
                        "id": 1366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4266:87:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1360,
                      "id": 1367,
                      "nodeType": "Return",
                      "src": "4259:94:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1350,
                  "nodeType": "StructuredDocumentation",
                  "src": "3780:351:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                },
                "id": 1369,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionCallWithValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1357,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1352,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1369,
                      "src": "4167:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1351,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4167:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1354,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1369,
                      "src": "4183:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1353,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4183:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1356,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1369,
                      "src": "4202:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1355,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4202:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4166:50:5"
                },
                "returnParameters": {
                  "id": 1360,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1359,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1369,
                      "src": "4235:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1358,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4235:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4234:14:5"
                },
                "scope": 1554,
                "src": "4136:224:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1418,
                  "nodeType": "Block",
                  "src": "4749:382:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1386,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "4775:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Address_$1554",
                                      "typeString": "library Address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Address_$1554",
                                      "typeString": "library Address"
                                    }
                                  ],
                                  "id": 1385,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4767:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1384,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4767:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4767:13:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4767:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1389,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1376,
                              "src": "4792:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4767:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                            "id": 1391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4799:40:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                              "typeString": "literal_string \"Address: insufficient balance for call\""
                            },
                            "value": "Address: insufficient balance for call"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                              "typeString": "literal_string \"Address: insufficient balance for call\""
                            }
                          ],
                          "id": 1383,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4759:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4759:81:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1393,
                      "nodeType": "ExpressionStatement",
                      "src": "4759:81:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1396,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1372,
                                "src": "4869:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1395,
                              "name": "isContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1278,
                              "src": "4858:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 1397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4858:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                            "id": 1398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4878:31:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                              "typeString": "literal_string \"Address: call to non-contract\""
                            },
                            "value": "Address: call to non-contract"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                              "typeString": "literal_string \"Address: call to non-contract\""
                            }
                          ],
                          "id": 1394,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4850:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4850:60:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1400,
                      "nodeType": "ExpressionStatement",
                      "src": "4850:60:5"
                    },
                    {
                      "assignments": [
                        1402,
                        1404
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1402,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1418,
                          "src": "4981:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1401,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "4981:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1404,
                          "mutability": "mutable",
                          "name": "returndata",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1418,
                          "src": "4995:23:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1403,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4995:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1411,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1409,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1374,
                            "src": "5050:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1405,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1372,
                              "src": "5022:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5022:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 1407,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1376,
                              "src": "5042:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "5022:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5022:33:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4980:75:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1413,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1402,
                            "src": "5090:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1414,
                            "name": "returndata",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1404,
                            "src": "5099:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1415,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1378,
                            "src": "5111:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1412,
                          "name": "_verifyCallResult",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "5072:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5072:52:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1382,
                      "id": 1417,
                      "nodeType": "Return",
                      "src": "5065:59:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1370,
                  "nodeType": "StructuredDocumentation",
                  "src": "4366:237:5",
                  "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                },
                "id": 1419,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionCallWithValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1379,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1372,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1419,
                      "src": "4639:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1371,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4639:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1374,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1419,
                      "src": "4655:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1373,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4655:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1376,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1419,
                      "src": "4674:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4674:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1378,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1419,
                      "src": "4689:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1377,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4689:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4638:78:5"
                },
                "returnParameters": {
                  "id": 1382,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1381,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1419,
                      "src": "4735:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1380,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4735:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4734:14:5"
                },
                "scope": 1554,
                "src": "4608:523:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1435,
                  "nodeType": "Block",
                  "src": "5408:97:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1430,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "5444:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1431,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "5452:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                            "id": 1432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5458:39:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                              "typeString": "literal_string \"Address: low-level static call failed\""
                            },
                            "value": "Address: low-level static call failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                              "typeString": "literal_string \"Address: low-level static call failed\""
                            }
                          ],
                          "id": 1429,
                          "name": "functionStaticCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1436,
                            1471
                          ],
                          "referencedDeclaration": 1471,
                          "src": "5425:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                          }
                        },
                        "id": 1433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5425:73:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1428,
                      "id": 1434,
                      "nodeType": "Return",
                      "src": "5418:80:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1420,
                  "nodeType": "StructuredDocumentation",
                  "src": "5137:166:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                },
                "id": 1436,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionStaticCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1425,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1422,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1436,
                      "src": "5336:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1421,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5336:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1424,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1436,
                      "src": "5352:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1423,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5352:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5335:35:5"
                },
                "returnParameters": {
                  "id": 1428,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1427,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1436,
                      "src": "5394:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1426,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5394:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5393:14:5"
                },
                "scope": 1554,
                "src": "5308:197:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1470,
                  "nodeType": "Block",
                  "src": "5817:288:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1450,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1439,
                                "src": "5846:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1449,
                              "name": "isContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1278,
                              "src": "5835:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 1451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5835:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                            "id": 1452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5855:38:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                              "typeString": "literal_string \"Address: static call to non-contract\""
                            },
                            "value": "Address: static call to non-contract"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                              "typeString": "literal_string \"Address: static call to non-contract\""
                            }
                          ],
                          "id": 1448,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5827:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5827:67:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1454,
                      "nodeType": "ExpressionStatement",
                      "src": "5827:67:5"
                    },
                    {
                      "assignments": [
                        1456,
                        1458
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1456,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1470,
                          "src": "5965:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1455,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "5965:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1458,
                          "mutability": "mutable",
                          "name": "returndata",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1470,
                          "src": "5979:23:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1457,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5979:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1463,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1461,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1441,
                            "src": "6024:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1459,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1439,
                            "src": "6006:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6006:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 1462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6006:23:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5964:65:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1465,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "6064:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1466,
                            "name": "returndata",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1458,
                            "src": "6073:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1467,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "6085:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1464,
                          "name": "_verifyCallResult",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "6046:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6046:52:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1447,
                      "id": 1469,
                      "nodeType": "Return",
                      "src": "6039:59:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1437,
                  "nodeType": "StructuredDocumentation",
                  "src": "5511:173:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                },
                "id": 1471,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionStaticCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1444,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1439,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1471,
                      "src": "5717:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1438,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5717:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1441,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1471,
                      "src": "5733:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1440,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5733:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1443,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1471,
                      "src": "5752:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1442,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5752:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5716:63:5"
                },
                "returnParameters": {
                  "id": 1447,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1446,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1471,
                      "src": "5803:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1445,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5803:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5802:14:5"
                },
                "scope": 1554,
                "src": "5689:416:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1487,
                  "nodeType": "Block",
                  "src": "6381:101:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1482,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1474,
                            "src": "6419:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1483,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1476,
                            "src": "6427:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                            "id": 1484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6433:41:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                              "typeString": "literal_string \"Address: low-level delegate call failed\""
                            },
                            "value": "Address: low-level delegate call failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                              "typeString": "literal_string \"Address: low-level delegate call failed\""
                            }
                          ],
                          "id": 1481,
                          "name": "functionDelegateCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1488,
                            1523
                          ],
                          "referencedDeclaration": 1523,
                          "src": "6398:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                          }
                        },
                        "id": 1485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6398:77:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1480,
                      "id": 1486,
                      "nodeType": "Return",
                      "src": "6391:84:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1472,
                  "nodeType": "StructuredDocumentation",
                  "src": "6111:168:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                },
                "id": 1488,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionDelegateCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1477,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1474,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1488,
                      "src": "6314:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1473,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6314:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1476,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1488,
                      "src": "6330:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1475,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6330:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6313:35:5"
                },
                "returnParameters": {
                  "id": 1480,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1479,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1488,
                      "src": "6367:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1478,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6367:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6366:14:5"
                },
                "scope": 1554,
                "src": "6284:198:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1522,
                  "nodeType": "Block",
                  "src": "6793:292:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1502,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1491,
                                "src": "6822:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1501,
                              "name": "isContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1278,
                              "src": "6811:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 1503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6811:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                            "id": 1504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6831:40:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                              "typeString": "literal_string \"Address: delegate call to non-contract\""
                            },
                            "value": "Address: delegate call to non-contract"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                              "typeString": "literal_string \"Address: delegate call to non-contract\""
                            }
                          ],
                          "id": 1500,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6803:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6803:69:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1506,
                      "nodeType": "ExpressionStatement",
                      "src": "6803:69:5"
                    },
                    {
                      "assignments": [
                        1508,
                        1510
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1508,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1522,
                          "src": "6943:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1507,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "6943:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1510,
                          "mutability": "mutable",
                          "name": "returndata",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1522,
                          "src": "6957:23:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1509,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6957:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1515,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1513,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "7004:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1511,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1491,
                            "src": "6984:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6984:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 1514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6984:25:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6942:67:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1517,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1508,
                            "src": "7044:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1518,
                            "name": "returndata",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1510,
                            "src": "7053:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1519,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1495,
                            "src": "7065:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1516,
                          "name": "_verifyCallResult",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "7026:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7026:52:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 1499,
                      "id": 1521,
                      "nodeType": "Return",
                      "src": "7019:59:5"
                    }
                  ]
                },
                "documentation": {
                  "id": 1489,
                  "nodeType": "StructuredDocumentation",
                  "src": "6488:175:5",
                  "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                },
                "id": 1523,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "functionDelegateCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1496,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1491,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1523,
                      "src": "6698:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1490,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6698:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1493,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1523,
                      "src": "6714:17:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1492,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6714:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1495,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1523,
                      "src": "6733:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1494,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "6733:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6697:63:5"
                },
                "returnParameters": {
                  "id": 1499,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1498,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1523,
                      "src": "6779:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1497,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6779:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6778:14:5"
                },
                "scope": 1554,
                "src": "6668:417:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1552,
                  "nodeType": "Block",
                  "src": "7220:596:5",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1534,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1525,
                        "src": "7234:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1550,
                        "nodeType": "Block",
                        "src": "7291:519:5",
                        "statements": [
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1538,
                                  "name": "returndata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1527,
                                  "src": "7375:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7375:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7395:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7375:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 1548,
                              "nodeType": "Block",
                              "src": "7747:53:5",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1545,
                                        "name": "errorMessage",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1529,
                                        "src": "7772:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 1544,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -19,
                                        -19
                                      ],
                                      "referencedDeclaration": -19,
                                      "src": "7765:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 1546,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7765:20:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1547,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7765:20:5"
                                }
                              ]
                            },
                            "id": 1549,
                            "nodeType": "IfStatement",
                            "src": "7371:429:5",
                            "trueBody": {
                              "id": 1543,
                              "nodeType": "Block",
                              "src": "7398:343:5",
                              "statements": [
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "7582:145:5",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "7604:40:5",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "returndata",
                                              "nodeType": "YulIdentifier",
                                              "src": "7633:10:5"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7627:5:5"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7627:17:5"
                                        },
                                        "variables": [
                                          {
                                            "name": "returndata_size",
                                            "nodeType": "YulTypedName",
                                            "src": "7608:15:5",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "7676:2:5",
                                                  "type": "",
                                                  "value": "32"
                                                },
                                                {
                                                  "name": "returndata",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7680:10:5"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7672:3:5"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7672:19:5"
                                            },
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "7693:15:5"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "7665:6:5"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7665:44:5"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "7665:44:5"
                                      }
                                    ]
                                  },
                                  "evmVersion": "istanbul",
                                  "externalReferences": [
                                    {
                                      "declaration": 1527,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "7633:10:5",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 1527,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "7680:10:5",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 1542,
                                  "nodeType": "InlineAssembly",
                                  "src": "7573:154:5"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "id": 1551,
                      "nodeType": "IfStatement",
                      "src": "7230:580:5",
                      "trueBody": {
                        "id": 1537,
                        "nodeType": "Block",
                        "src": "7243:42:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1535,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1527,
                              "src": "7264:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "functionReturnParameters": 1533,
                            "id": 1536,
                            "nodeType": "Return",
                            "src": "7257:17:5"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1553,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_verifyCallResult",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1530,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1525,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1553,
                      "src": "7118:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1524,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7118:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1527,
                      "mutability": "mutable",
                      "name": "returndata",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1553,
                      "src": "7132:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1526,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7132:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1529,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1553,
                      "src": "7157:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1528,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7157:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7117:67:5"
                },
                "returnParameters": {
                  "id": 1533,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1532,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1553,
                      "src": "7206:12:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1531,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7206:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7205:14:5"
                },
                "scope": 1554,
                "src": "7091:725:5",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              }
            ],
            "scope": 1555,
            "src": "134:7684:5"
          }
        ],
        "src": "33:7786:5"
      }
    },
    "@openzeppelin/contracts/utils/Context.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
        "exportedSymbols": {
          "Context": [
            1577
          ]
        },
        "id": 1578,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1556,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:6"
          },
          {
            "abstract": true,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1577,
            "linearizedBaseContracts": [
              1577
            ],
            "name": "Context",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1564,
                  "nodeType": "Block",
                  "src": "668:34:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1561,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "685:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1562,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "685:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "functionReturnParameters": 1560,
                      "id": 1563,
                      "nodeType": "Return",
                      "src": "678:17:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1565,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_msgSender",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1557,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "617:2:6"
                },
                "returnParameters": {
                  "id": 1560,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1559,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1565,
                      "src": "651:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 1558,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "651:15:6",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "650:17:6"
                },
                "scope": 1577,
                "src": "598:104:6",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1575,
                  "nodeType": "Block",
                  "src": "773:165:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1570,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "783:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Context_$1577",
                          "typeString": "contract Context"
                        }
                      },
                      "id": 1571,
                      "nodeType": "ExpressionStatement",
                      "src": "783:4:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1572,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "923:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "923:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "functionReturnParameters": 1569,
                      "id": 1574,
                      "nodeType": "Return",
                      "src": "916:15:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1576,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_msgData",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1566,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "725:2:6"
                },
                "returnParameters": {
                  "id": 1569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1568,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1576,
                      "src": "759:12:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1567,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "759:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "758:14:6"
                },
                "scope": 1577,
                "src": "708:230:6",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "internal"
              }
            ],
            "scope": 1578,
            "src": "566:374:6"
          }
        ],
        "src": "33:908:6"
      }
    },
    "@openzeppelin/contracts/utils/EnumerableSet.sol": {
      "id": 7,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol",
        "exportedSymbols": {
          "EnumerableSet": [
            2069
          ]
        },
        "id": 2070,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1579,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:7"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": {
              "id": 1580,
              "nodeType": "StructuredDocumentation",
              "src": "66:686:7",
              "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."
            },
            "fullyImplemented": true,
            "id": 2069,
            "linearizedBaseContracts": [
              2069
            ],
            "name": "EnumerableSet",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "canonicalName": "EnumerableSet.Set",
                "id": 1588,
                "members": [
                  {
                    "constant": false,
                    "id": 1583,
                    "mutability": "mutable",
                    "name": "_values",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 1588,
                    "src": "1275:17:7",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 1581,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1275:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 1582,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "1275:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                        "typeString": "bytes32[]"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 1587,
                    "mutability": "mutable",
                    "name": "_indexes",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 1588,
                    "src": "1426:37:7",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "typeName": {
                      "id": 1586,
                      "keyType": {
                        "id": 1584,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1435:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1426:28:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      },
                      "valueType": {
                        "id": 1585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1446:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Set",
                "nodeType": "StructDefinition",
                "scope": 2069,
                "src": "1221:249:7",
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1628,
                  "nodeType": "Block",
                  "src": "1709:335:7",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1723:22:7",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1599,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1591,
                              "src": "1734:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                "typeString": "struct EnumerableSet.Set storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1600,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1593,
                              "src": "1739:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                "typeString": "struct EnumerableSet.Set storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1598,
                            "name": "_contains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1727,
                            "src": "1724:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                            }
                          },
                          "id": 1601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:21:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1626,
                        "nodeType": "Block",
                        "src": "2001:37:7",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2022:5:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "functionReturnParameters": 1597,
                            "id": 1625,
                            "nodeType": "Return",
                            "src": "2015:12:7"
                          }
                        ]
                      },
                      "id": 1627,
                      "nodeType": "IfStatement",
                      "src": "1719:319:7",
                      "trueBody": {
                        "id": 1623,
                        "nodeType": "Block",
                        "src": "1747:248:7",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1608,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1593,
                                  "src": "1778:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1603,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1591,
                                    "src": "1761:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1606,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "1761:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 1607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "push",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1761:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$__$",
                                  "typeString": "function (bytes32)"
                                }
                              },
                              "id": 1609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1761:23:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1610,
                            "nodeType": "ExpressionStatement",
                            "src": "1761:23:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1611,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1591,
                                    "src": "1919:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1614,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_indexes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1587,
                                  "src": "1919:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 1615,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1613,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1593,
                                  "src": "1932:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "1919:19:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1616,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1591,
                                    "src": "1941:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1617,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "1941:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 1618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1941:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1919:40:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1620,
                            "nodeType": "ExpressionStatement",
                            "src": "1919:40:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1980:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "functionReturnParameters": 1597,
                            "id": 1622,
                            "nodeType": "Return",
                            "src": "1973:11:7"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 1589,
                  "nodeType": "StructuredDocumentation",
                  "src": "1476:159:7",
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 1629,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1594,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1591,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1629,
                      "src": "1654:15:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1590,
                        "name": "Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1588,
                        "src": "1654:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                          "typeString": "struct EnumerableSet.Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1593,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1629,
                      "src": "1671:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1592,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1653:32:7"
                },
                "returnParameters": {
                  "id": 1597,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1596,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1629,
                      "src": "1703:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1595,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1703:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1702:6:7"
                },
                "scope": 2069,
                "src": "1640:404:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1708,
                  "nodeType": "Block",
                  "src": "2284:1440:7",
                  "statements": [
                    {
                      "assignments": [
                        1640
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1640,
                          "mutability": "mutable",
                          "name": "valueIndex",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1708,
                          "src": "2394:18:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1639,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2394:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1645,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1641,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1632,
                            "src": "2415:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                              "typeString": "struct EnumerableSet.Set storage pointer"
                            }
                          },
                          "id": 1642,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_indexes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "2415:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 1644,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1643,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1634,
                          "src": "2428:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2415:19:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2394:40:7"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1646,
                          "name": "valueIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1640,
                          "src": "2449:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2463:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2449:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1706,
                        "nodeType": "Block",
                        "src": "3681:37:7",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3702:5:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "functionReturnParameters": 1638,
                            "id": 1705,
                            "nodeType": "Return",
                            "src": "3695:12:7"
                          }
                        ]
                      },
                      "id": 1707,
                      "nodeType": "IfStatement",
                      "src": "2445:1273:7",
                      "trueBody": {
                        "id": 1703,
                        "nodeType": "Block",
                        "src": "2466:1209:7",
                        "statements": [
                          {
                            "assignments": [
                              1650
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1650,
                                "mutability": "mutable",
                                "name": "toDeleteIndex",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1703,
                                "src": "2806:21:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1649,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2806:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1654,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1651,
                                "name": "valueIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1640,
                                "src": "2830:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2843:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2830:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2806:38:7"
                          },
                          {
                            "assignments": [
                              1656
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1656,
                                "mutability": "mutable",
                                "name": "lastIndex",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1703,
                                "src": "2858:17:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1655,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2858:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1662,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1657,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1632,
                                    "src": "2878:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1658,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "2878:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 1659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2878:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2899:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2878:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2858:42:7"
                          },
                          {
                            "assignments": [
                              1664
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1664,
                                "mutability": "mutable",
                                "name": "lastvalue",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1703,
                                "src": "3140:17:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 1663,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3140:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1669,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1665,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1632,
                                  "src": "3160:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                    "typeString": "struct EnumerableSet.Set storage pointer"
                                  }
                                },
                                "id": 1666,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1583,
                                "src": "3160:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 1668,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1667,
                                "name": "lastIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1656,
                                "src": "3172:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3160:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3140:42:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1670,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1632,
                                    "src": "3274:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1673,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "3274:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 1674,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1672,
                                  "name": "toDeleteIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1650,
                                  "src": "3286:13:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3274:26:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 1675,
                                "name": "lastvalue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1664,
                                "src": "3303:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3274:38:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 1677,
                            "nodeType": "ExpressionStatement",
                            "src": "3274:38:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1678,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1632,
                                    "src": "3378:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1681,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_indexes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1587,
                                  "src": "3378:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 1682,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1680,
                                  "name": "lastvalue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1664,
                                  "src": "3391:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3378:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1683,
                                  "name": "toDeleteIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1650,
                                  "src": "3404:13:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3420:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3404:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3378:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1687,
                            "nodeType": "ExpressionStatement",
                            "src": "3378:43:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1688,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1632,
                                    "src": "3527:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1691,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "3527:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 1692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pop",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3527:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                                  "typeString": "function ()"
                                }
                              },
                              "id": 1693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3527:17:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1694,
                            "nodeType": "ExpressionStatement",
                            "src": "3527:17:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "delete",
                              "prefix": true,
                              "src": "3612:26:7",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1695,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1632,
                                    "src": "3619:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 1696,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_indexes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1587,
                                  "src": "3619:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 1698,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1697,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1634,
                                  "src": "3632:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3619:19:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1700,
                            "nodeType": "ExpressionStatement",
                            "src": "3612:26:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3660:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "functionReturnParameters": 1638,
                            "id": 1702,
                            "nodeType": "Return",
                            "src": "3653:11:7"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 1630,
                  "nodeType": "StructuredDocumentation",
                  "src": "2050:157:7",
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 1709,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_remove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1635,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1632,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1709,
                      "src": "2229:15:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1631,
                        "name": "Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1588,
                        "src": "2229:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                          "typeString": "struct EnumerableSet.Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1634,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1709,
                      "src": "2246:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1633,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2246:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2228:32:7"
                },
                "returnParameters": {
                  "id": 1638,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1637,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1709,
                      "src": "2278:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1636,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2278:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2277:6:7"
                },
                "scope": 2069,
                "src": "2212:1512:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1726,
                  "nodeType": "Block",
                  "src": "3884:48:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1719,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1712,
                              "src": "3901:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                "typeString": "struct EnumerableSet.Set storage pointer"
                              }
                            },
                            "id": 1720,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_indexes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1587,
                            "src": "3901:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1722,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1721,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1714,
                            "src": "3914:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3901:19:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3924:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3901:24:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1718,
                      "id": 1725,
                      "nodeType": "Return",
                      "src": "3894:31:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1710,
                  "nodeType": "StructuredDocumentation",
                  "src": "3730:70:7",
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 1727,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_contains",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1715,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1712,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "3824:15:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1711,
                        "name": "Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1588,
                        "src": "3824:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                          "typeString": "struct EnumerableSet.Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1714,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "3841:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1713,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3841:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3823:32:7"
                },
                "returnParameters": {
                  "id": 1718,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1717,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "3878:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1716,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3878:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3877:6:7"
                },
                "scope": 2069,
                "src": "3805:127:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1739,
                  "nodeType": "Block",
                  "src": "4078:42:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1735,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1730,
                            "src": "4095:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                              "typeString": "struct EnumerableSet.Set storage pointer"
                            }
                          },
                          "id": 1736,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_values",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1583,
                          "src": "4095:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                            "typeString": "bytes32[] storage ref"
                          }
                        },
                        "id": 1737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4095:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1734,
                      "id": 1738,
                      "nodeType": "Return",
                      "src": "4088:25:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1728,
                  "nodeType": "StructuredDocumentation",
                  "src": "3938:70:7",
                  "text": " @dev Returns the number of values on the set. O(1)."
                },
                "id": 1740,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_length",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1731,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1730,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1740,
                      "src": "4030:15:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1729,
                        "name": "Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1588,
                        "src": "4030:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                          "typeString": "struct EnumerableSet.Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4029:17:7"
                },
                "returnParameters": {
                  "id": 1734,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1733,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1740,
                      "src": "4069:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1732,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4069:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4068:9:7"
                },
                "scope": 2069,
                "src": "4013:107:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1764,
                  "nodeType": "Block",
                  "src": "4528:125:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1751,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1743,
                                  "src": "4546:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                                    "typeString": "struct EnumerableSet.Set storage pointer"
                                  }
                                },
                                "id": 1752,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1583,
                                "src": "4546:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4546:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1754,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1745,
                              "src": "4567:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4546:26:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473",
                            "id": 1756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4574:36:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb",
                              "typeString": "literal_string \"EnumerableSet: index out of bounds\""
                            },
                            "value": "EnumerableSet: index out of bounds"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb",
                              "typeString": "literal_string \"EnumerableSet: index out of bounds\""
                            }
                          ],
                          "id": 1750,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4538:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4538:73:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1758,
                      "nodeType": "ExpressionStatement",
                      "src": "4538:73:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1759,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1743,
                            "src": "4628:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                              "typeString": "struct EnumerableSet.Set storage pointer"
                            }
                          },
                          "id": 1760,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_values",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1583,
                          "src": "4628:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                            "typeString": "bytes32[] storage ref"
                          }
                        },
                        "id": 1762,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1761,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1745,
                          "src": "4640:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4628:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "functionReturnParameters": 1749,
                      "id": 1763,
                      "nodeType": "Return",
                      "src": "4621:25:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1741,
                  "nodeType": "StructuredDocumentation",
                  "src": "4125:322:7",
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 1765,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_at",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1746,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1743,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1765,
                      "src": "4465:15:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1742,
                        "name": "Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1588,
                        "src": "4465:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                          "typeString": "struct EnumerableSet.Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1745,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1765,
                      "src": "4482:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1744,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4482:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4464:32:7"
                },
                "returnParameters": {
                  "id": 1749,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1748,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1765,
                      "src": "4519:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1747,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4519:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4518:9:7"
                },
                "scope": 2069,
                "src": "4452:201:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "private"
              },
              {
                "canonicalName": "EnumerableSet.Bytes32Set",
                "id": 1768,
                "members": [
                  {
                    "constant": false,
                    "id": 1767,
                    "mutability": "mutable",
                    "name": "_inner",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 1768,
                    "src": "4706:10:7",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 1766,
                      "name": "Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1588,
                      "src": "4706:3:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Bytes32Set",
                "nodeType": "StructDefinition",
                "scope": 2069,
                "src": "4678:45:7",
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1784,
                  "nodeType": "Block",
                  "src": "4969:47:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1779,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1771,
                              "src": "4991:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                                "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                              }
                            },
                            "id": 1780,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1767,
                            "src": "4991:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1781,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1773,
                            "src": "5003:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1778,
                          "name": "_add",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1629,
                          "src": "4986:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 1782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4986:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1777,
                      "id": 1783,
                      "nodeType": "Return",
                      "src": "4979:30:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1769,
                  "nodeType": "StructuredDocumentation",
                  "src": "4729:159:7",
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 1785,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1774,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1771,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1785,
                      "src": "4906:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                        "typeString": "struct EnumerableSet.Bytes32Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1770,
                        "name": "Bytes32Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1768,
                        "src": "4906:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                          "typeString": "struct EnumerableSet.Bytes32Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1773,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1785,
                      "src": "4930:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1772,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4930:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4905:39:7"
                },
                "returnParameters": {
                  "id": 1777,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1776,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1785,
                      "src": "4963:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1775,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4963:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4962:6:7"
                },
                "scope": 2069,
                "src": "4893:123:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1801,
                  "nodeType": "Block",
                  "src": "5263:50:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1796,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1788,
                              "src": "5288:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                                "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                              }
                            },
                            "id": 1797,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1767,
                            "src": "5288:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1798,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1790,
                            "src": "5300:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1795,
                          "name": "_remove",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1709,
                          "src": "5280:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 1799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5280:26:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1794,
                      "id": 1800,
                      "nodeType": "Return",
                      "src": "5273:33:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1786,
                  "nodeType": "StructuredDocumentation",
                  "src": "5022:157:7",
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 1802,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "remove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1791,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1788,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1802,
                      "src": "5200:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                        "typeString": "struct EnumerableSet.Bytes32Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1787,
                        "name": "Bytes32Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1768,
                        "src": "5200:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                          "typeString": "struct EnumerableSet.Bytes32Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1790,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1802,
                      "src": "5224:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1789,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5224:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5199:39:7"
                },
                "returnParameters": {
                  "id": 1794,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1793,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1802,
                      "src": "5257:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1792,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5257:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5256:6:7"
                },
                "scope": 2069,
                "src": "5184:129:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1818,
                  "nodeType": "Block",
                  "src": "5480:52:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1813,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1805,
                              "src": "5507:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                                "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                              }
                            },
                            "id": 1814,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1767,
                            "src": "5507:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1815,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1807,
                            "src": "5519:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1812,
                          "name": "_contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1727,
                          "src": "5497:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                          }
                        },
                        "id": 1816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5497:28:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1811,
                      "id": 1817,
                      "nodeType": "Return",
                      "src": "5490:35:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1803,
                  "nodeType": "StructuredDocumentation",
                  "src": "5319:70:7",
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 1819,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "contains",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1808,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1805,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1819,
                      "src": "5412:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                        "typeString": "struct EnumerableSet.Bytes32Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1804,
                        "name": "Bytes32Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1768,
                        "src": "5412:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                          "typeString": "struct EnumerableSet.Bytes32Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1807,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1819,
                      "src": "5436:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1806,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5436:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5411:39:7"
                },
                "returnParameters": {
                  "id": 1811,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1810,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1819,
                      "src": "5474:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1809,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5474:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5473:6:7"
                },
                "scope": 2069,
                "src": "5394:138:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1832,
                  "nodeType": "Block",
                  "src": "5685:43:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1828,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1822,
                              "src": "5710:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                                "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                              }
                            },
                            "id": 1829,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1767,
                            "src": "5710:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          ],
                          "id": 1827,
                          "name": "_length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1740,
                          "src": "5702:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$returns$_t_uint256_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 1830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5702:19:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1826,
                      "id": 1831,
                      "nodeType": "Return",
                      "src": "5695:26:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1820,
                  "nodeType": "StructuredDocumentation",
                  "src": "5538:70:7",
                  "text": " @dev Returns the number of values in the set. O(1)."
                },
                "id": 1833,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "length",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1823,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1822,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1833,
                      "src": "5629:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                        "typeString": "struct EnumerableSet.Bytes32Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1821,
                        "name": "Bytes32Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1768,
                        "src": "5629:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                          "typeString": "struct EnumerableSet.Bytes32Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5628:24:7"
                },
                "returnParameters": {
                  "id": 1826,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1825,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1833,
                      "src": "5676:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1824,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5676:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5675:9:7"
                },
                "scope": 2069,
                "src": "5613:115:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1849,
                  "nodeType": "Block",
                  "src": "6143:46:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1844,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1836,
                              "src": "6164:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                                "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                              }
                            },
                            "id": 1845,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1767,
                            "src": "6164:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1846,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1838,
                            "src": "6176:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1843,
                          "name": "_at",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1765,
                          "src": "6160:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 1847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6160:22:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "functionReturnParameters": 1842,
                      "id": 1848,
                      "nodeType": "Return",
                      "src": "6153:29:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1834,
                  "nodeType": "StructuredDocumentation",
                  "src": "5733:322:7",
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 1850,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "at",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1839,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1836,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1850,
                      "src": "6072:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                        "typeString": "struct EnumerableSet.Bytes32Set"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1835,
                        "name": "Bytes32Set",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1768,
                        "src": "6072:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$1768_storage_ptr",
                          "typeString": "struct EnumerableSet.Bytes32Set"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1838,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1850,
                      "src": "6096:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1837,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6096:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6071:39:7"
                },
                "returnParameters": {
                  "id": 1842,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1841,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1850,
                      "src": "6134:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1840,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6134:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6133:9:7"
                },
                "scope": 2069,
                "src": "6060:129:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "canonicalName": "EnumerableSet.AddressSet",
                "id": 1853,
                "members": [
                  {
                    "constant": false,
                    "id": 1852,
                    "mutability": "mutable",
                    "name": "_inner",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 1853,
                    "src": "6242:10:7",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 1851,
                      "name": "Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1588,
                      "src": "6242:3:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "AddressSet",
                "nodeType": "StructDefinition",
                "scope": 2069,
                "src": "6214:45:7",
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1878,
                  "nodeType": "Block",
                  "src": "6505:74:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1864,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1856,
                              "src": "6527:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                                "typeString": "struct EnumerableSet.AddressSet storage pointer"
                              }
                            },
                            "id": 1865,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1852,
                            "src": "6527:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1872,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1858,
                                        "src": "6563:5:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1871,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6555:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 1870,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6555:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6555:14:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 1869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6547:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1868,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6547:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6547:23:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6539:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1866,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "6539:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6539:32:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1863,
                          "name": "_add",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1629,
                          "src": "6522:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 1876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6522:50:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1862,
                      "id": 1877,
                      "nodeType": "Return",
                      "src": "6515:57:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1854,
                  "nodeType": "StructuredDocumentation",
                  "src": "6265:159:7",
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 1879,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1859,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1856,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1879,
                      "src": "6442:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                        "typeString": "struct EnumerableSet.AddressSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1855,
                        "name": "AddressSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1853,
                        "src": "6442:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                          "typeString": "struct EnumerableSet.AddressSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1858,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1879,
                      "src": "6466:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1857,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6466:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6441:39:7"
                },
                "returnParameters": {
                  "id": 1862,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1861,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1879,
                      "src": "6499:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1860,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6499:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6498:6:7"
                },
                "scope": 2069,
                "src": "6429:150:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1904,
                  "nodeType": "Block",
                  "src": "6826:77:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1890,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1882,
                              "src": "6851:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                                "typeString": "struct EnumerableSet.AddressSet storage pointer"
                              }
                            },
                            "id": 1891,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1852,
                            "src": "6851:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1898,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1884,
                                        "src": "6887:5:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1897,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6879:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 1896,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6879:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6879:14:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 1895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6871:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1894,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6871:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6871:23:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6863:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1892,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "6863:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6863:32:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1889,
                          "name": "_remove",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1709,
                          "src": "6843:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 1902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6843:53:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1888,
                      "id": 1903,
                      "nodeType": "Return",
                      "src": "6836:60:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1880,
                  "nodeType": "StructuredDocumentation",
                  "src": "6585:157:7",
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 1905,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "remove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1885,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1882,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1905,
                      "src": "6763:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                        "typeString": "struct EnumerableSet.AddressSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1881,
                        "name": "AddressSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1853,
                        "src": "6763:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                          "typeString": "struct EnumerableSet.AddressSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1884,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1905,
                      "src": "6787:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1883,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6787:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6762:39:7"
                },
                "returnParameters": {
                  "id": 1888,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1887,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1905,
                      "src": "6820:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1886,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6820:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6819:6:7"
                },
                "scope": 2069,
                "src": "6747:156:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1930,
                  "nodeType": "Block",
                  "src": "7070:79:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1916,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1908,
                              "src": "7097:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                                "typeString": "struct EnumerableSet.AddressSet storage pointer"
                              }
                            },
                            "id": 1917,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1852,
                            "src": "7097:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1924,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1910,
                                        "src": "7133:5:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1923,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7125:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 1922,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7125:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1925,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7125:14:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 1921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7117:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1920,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7117:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7117:23:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7109:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1918,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7109:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7109:32:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1915,
                          "name": "_contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1727,
                          "src": "7087:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                          }
                        },
                        "id": 1928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7087:55:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1914,
                      "id": 1929,
                      "nodeType": "Return",
                      "src": "7080:62:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1906,
                  "nodeType": "StructuredDocumentation",
                  "src": "6909:70:7",
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 1931,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "contains",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1911,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1908,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1931,
                      "src": "7002:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                        "typeString": "struct EnumerableSet.AddressSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1907,
                        "name": "AddressSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1853,
                        "src": "7002:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                          "typeString": "struct EnumerableSet.AddressSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1910,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1931,
                      "src": "7026:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1909,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7026:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7001:39:7"
                },
                "returnParameters": {
                  "id": 1914,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1913,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1931,
                      "src": "7064:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1912,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7064:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7063:6:7"
                },
                "scope": 2069,
                "src": "6984:165:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1944,
                  "nodeType": "Block",
                  "src": "7302:43:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1940,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1934,
                              "src": "7327:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                                "typeString": "struct EnumerableSet.AddressSet storage pointer"
                              }
                            },
                            "id": 1941,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1852,
                            "src": "7327:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          ],
                          "id": 1939,
                          "name": "_length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1740,
                          "src": "7319:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$returns$_t_uint256_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 1942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7319:19:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1938,
                      "id": 1943,
                      "nodeType": "Return",
                      "src": "7312:26:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1932,
                  "nodeType": "StructuredDocumentation",
                  "src": "7155:70:7",
                  "text": " @dev Returns the number of values in the set. O(1)."
                },
                "id": 1945,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "length",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1935,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1934,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1945,
                      "src": "7246:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                        "typeString": "struct EnumerableSet.AddressSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1933,
                        "name": "AddressSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1853,
                        "src": "7246:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                          "typeString": "struct EnumerableSet.AddressSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7245:24:7"
                },
                "returnParameters": {
                  "id": 1938,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1937,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1945,
                      "src": "7293:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1936,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7293:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7292:9:7"
                },
                "scope": 2069,
                "src": "7230:115:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1970,
                  "nodeType": "Block",
                  "src": "7760:73:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1962,
                                          "name": "set",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1948,
                                          "src": "7805:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                                          }
                                        },
                                        "id": 1963,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "_inner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1852,
                                        "src": "7805:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$1588_storage",
                                          "typeString": "struct EnumerableSet.Set storage ref"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1964,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1950,
                                        "src": "7817:5:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_Set_$1588_storage",
                                          "typeString": "struct EnumerableSet.Set storage ref"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1961,
                                      "name": "_at",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1765,
                                      "src": "7801:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                                      }
                                    },
                                    "id": 1965,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7801:22:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 1960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7793:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1959,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7793:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7793:31:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7785:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 1957,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "7785:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7785:40:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 1956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7777:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1955,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7777:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7777:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "functionReturnParameters": 1954,
                      "id": 1969,
                      "nodeType": "Return",
                      "src": "7770:56:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1946,
                  "nodeType": "StructuredDocumentation",
                  "src": "7350:322:7",
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 1971,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "at",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1951,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1948,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1971,
                      "src": "7689:22:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                        "typeString": "struct EnumerableSet.AddressSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1947,
                        "name": "AddressSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1853,
                        "src": "7689:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1853_storage_ptr",
                          "typeString": "struct EnumerableSet.AddressSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1950,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1971,
                      "src": "7713:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1949,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7713:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7688:39:7"
                },
                "returnParameters": {
                  "id": 1954,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1953,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1971,
                      "src": "7751:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1952,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7751:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7750:9:7"
                },
                "scope": 2069,
                "src": "7677:156:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "canonicalName": "EnumerableSet.UintSet",
                "id": 1974,
                "members": [
                  {
                    "constant": false,
                    "id": 1973,
                    "mutability": "mutable",
                    "name": "_inner",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 1974,
                    "src": "7881:10:7",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 1972,
                      "name": "Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1588,
                      "src": "7881:3:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$1588_storage_ptr",
                        "typeString": "struct EnumerableSet.Set"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "UintSet",
                "nodeType": "StructDefinition",
                "scope": 2069,
                "src": "7856:42:7",
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1993,
                  "nodeType": "Block",
                  "src": "8141:56:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1985,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1977,
                              "src": "8163:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 1986,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1973,
                            "src": "8163:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1989,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1979,
                                "src": "8183:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8175:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1987,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8175:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8175:14:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1984,
                          "name": "_add",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1629,
                          "src": "8158:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8158:32:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 1983,
                      "id": 1992,
                      "nodeType": "Return",
                      "src": "8151:39:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1975,
                  "nodeType": "StructuredDocumentation",
                  "src": "7904:159:7",
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 1994,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1980,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1977,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1994,
                      "src": "8081:19:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                        "typeString": "struct EnumerableSet.UintSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1976,
                        "name": "UintSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1974,
                        "src": "8081:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                          "typeString": "struct EnumerableSet.UintSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1979,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1994,
                      "src": "8102:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1978,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8102:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8080:36:7"
                },
                "returnParameters": {
                  "id": 1983,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1982,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1994,
                      "src": "8135:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1981,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8135:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8134:6:7"
                },
                "scope": 2069,
                "src": "8068:129:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2013,
                  "nodeType": "Block",
                  "src": "8441:59:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2005,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1997,
                              "src": "8466:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 2006,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1973,
                            "src": "8466:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2009,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1999,
                                "src": "8486:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8478:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 2007,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8478:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8478:14:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2004,
                          "name": "_remove",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1709,
                          "src": "8458:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                          }
                        },
                        "id": 2011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8458:35:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 2003,
                      "id": 2012,
                      "nodeType": "Return",
                      "src": "8451:42:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 1995,
                  "nodeType": "StructuredDocumentation",
                  "src": "8203:157:7",
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 2014,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "remove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2000,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1997,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2014,
                      "src": "8381:19:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                        "typeString": "struct EnumerableSet.UintSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1996,
                        "name": "UintSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1974,
                        "src": "8381:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                          "typeString": "struct EnumerableSet.UintSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1999,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2014,
                      "src": "8402:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1998,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8402:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8380:36:7"
                },
                "returnParameters": {
                  "id": 2003,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2002,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2014,
                      "src": "8435:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2001,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8435:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8434:6:7"
                },
                "scope": 2069,
                "src": "8365:135:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2033,
                  "nodeType": "Block",
                  "src": "8664:61:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2025,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2017,
                              "src": "8691:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 2026,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1973,
                            "src": "8691:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2029,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2019,
                                "src": "8711:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8703:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 2027,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8703:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8703:14:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2024,
                          "name": "_contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1727,
                          "src": "8681:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                          }
                        },
                        "id": 2031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8681:37:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 2023,
                      "id": 2032,
                      "nodeType": "Return",
                      "src": "8674:44:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 2015,
                  "nodeType": "StructuredDocumentation",
                  "src": "8506:70:7",
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 2034,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "contains",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2020,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2017,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2034,
                      "src": "8599:19:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                        "typeString": "struct EnumerableSet.UintSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2016,
                        "name": "UintSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1974,
                        "src": "8599:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                          "typeString": "struct EnumerableSet.UintSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2019,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2034,
                      "src": "8620:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2018,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8620:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8598:36:7"
                },
                "returnParameters": {
                  "id": 2023,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2022,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2034,
                      "src": "8658:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2021,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8658:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8657:6:7"
                },
                "scope": 2069,
                "src": "8581:144:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2047,
                  "nodeType": "Block",
                  "src": "8875:43:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2043,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2037,
                              "src": "8900:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 2044,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1973,
                            "src": "8900:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$1588_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          ],
                          "id": 2042,
                          "name": "_length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1740,
                          "src": "8892:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$returns$_t_uint256_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 2045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8892:19:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2041,
                      "id": 2046,
                      "nodeType": "Return",
                      "src": "8885:26:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 2035,
                  "nodeType": "StructuredDocumentation",
                  "src": "8731:70:7",
                  "text": " @dev Returns the number of values on the set. O(1)."
                },
                "id": 2048,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "length",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2038,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2037,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2048,
                      "src": "8822:19:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                        "typeString": "struct EnumerableSet.UintSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2036,
                        "name": "UintSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1974,
                        "src": "8822:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                          "typeString": "struct EnumerableSet.UintSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8821:21:7"
                },
                "returnParameters": {
                  "id": 2041,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2040,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2048,
                      "src": "8866:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2039,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8866:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8865:9:7"
                },
                "scope": 2069,
                "src": "8806:112:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2067,
                  "nodeType": "Block",
                  "src": "9330:55:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2061,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2051,
                                  "src": "9359:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                                    "typeString": "struct EnumerableSet.UintSet storage pointer"
                                  }
                                },
                                "id": 2062,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1973,
                                "src": "9359:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$1588_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2063,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2053,
                                "src": "9371:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$1588_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2060,
                              "name": "_at",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1765,
                              "src": "9355:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$1588_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 2064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9355:22:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9347:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 2058,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9347:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 2065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9347:31:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2057,
                      "id": 2066,
                      "nodeType": "Return",
                      "src": "9340:38:7"
                    }
                  ]
                },
                "documentation": {
                  "id": 2049,
                  "nodeType": "StructuredDocumentation",
                  "src": "8923:322:7",
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 2068,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "at",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2054,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2051,
                      "mutability": "mutable",
                      "name": "set",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2068,
                      "src": "9262:19:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                        "typeString": "struct EnumerableSet.UintSet"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2050,
                        "name": "UintSet",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1974,
                        "src": "9262:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UintSet_$1974_storage_ptr",
                          "typeString": "struct EnumerableSet.UintSet"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2053,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2068,
                      "src": "9283:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2052,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9283:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9261:36:7"
                },
                "returnParameters": {
                  "id": 2057,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2056,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2068,
                      "src": "9321:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2055,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9321:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9320:9:7"
                },
                "scope": 2069,
                "src": "9250:135:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 2070,
            "src": "753:8634:7"
          }
        ],
        "src": "33:9355:7"
      }
    },
    "@openzeppelin/contracts/utils/ReentrancyGuard.sol": {
      "id": 8,
      "AST": {
        "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "exportedSymbols": {
          "ReentrancyGuard": [
            2109
          ]
        },
        "id": 2110,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2071,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0",
              "<",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:31:8"
          },
          {
            "abstract": true,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": {
              "id": 2072,
              "nodeType": "StructuredDocumentation",
              "src": "66:750:8",
              "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."
            },
            "fullyImplemented": true,
            "id": 2109,
            "linearizedBaseContracts": [
              2109
            ],
            "name": "ReentrancyGuard",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 2075,
                "mutability": "constant",
                "name": "_NOT_ENTERED",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2109,
                "src": "1605:41:8",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2073,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1605:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "31",
                  "id": 2074,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1645:1:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  },
                  "value": "1"
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 2078,
                "mutability": "constant",
                "name": "_ENTERED",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2109,
                "src": "1652:37:8",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2076,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1652:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "32",
                  "id": 2077,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1688:1:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_2_by_1",
                    "typeString": "int_const 2"
                  },
                  "value": "2"
                },
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 2080,
                "mutability": "mutable",
                "name": "_status",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2109,
                "src": "1696:23:8",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2079,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1696:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 2087,
                  "nodeType": "Block",
                  "src": "1750:39:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2083,
                          "name": "_status",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2080,
                          "src": "1760:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2084,
                          "name": "_NOT_ENTERED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2075,
                          "src": "1770:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1760:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2086,
                      "nodeType": "ExpressionStatement",
                      "src": "1760:22:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 2088,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2081,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1738:2:8"
                },
                "returnParameters": {
                  "id": 2082,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1750:0:8"
                },
                "scope": 2109,
                "src": "1726:63:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2107,
                  "nodeType": "Block",
                  "src": "2188:421:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2092,
                              "name": "_status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2080,
                              "src": "2277:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2093,
                              "name": "_ENTERED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2078,
                              "src": "2288:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2277:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                            "id": 2095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2298:33:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                              "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                            },
                            "value": "ReentrancyGuard: reentrant call"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                              "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                            }
                          ],
                          "id": 2091,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2269:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2269:63:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2097,
                      "nodeType": "ExpressionStatement",
                      "src": "2269:63:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2098,
                          "name": "_status",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2080,
                          "src": "2407:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2099,
                          "name": "_ENTERED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2078,
                          "src": "2417:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2407:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2101,
                      "nodeType": "ExpressionStatement",
                      "src": "2407:18:8"
                    },
                    {
                      "id": 2102,
                      "nodeType": "PlaceholderStatement",
                      "src": "2436:1:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2103,
                          "name": "_status",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2080,
                          "src": "2580:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2104,
                          "name": "_NOT_ENTERED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2075,
                          "src": "2590:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2580:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2106,
                      "nodeType": "ExpressionStatement",
                      "src": "2580:22:8"
                    }
                  ]
                },
                "documentation": {
                  "id": 2089,
                  "nodeType": "StructuredDocumentation",
                  "src": "1795:364:8",
                  "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."
                },
                "id": 2108,
                "name": "nonReentrant",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2090,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2185:2:8"
                },
                "src": "2164:445:8",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 2110,
            "src": "817:1794:8"
          }
        ],
        "src": "33:2579:8"
      }
    },
    "contracts/Authorizable.sol": {
      "id": 9,
      "AST": {
        "absolutePath": "contracts/Authorizable.sol",
        "exportedSymbols": {
          "Authorizable": [
            2171
          ]
        },
        "id": 2172,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2111,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:9"
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 2112,
            "nodeType": "ImportDirective",
            "scope": 2172,
            "sourceUnit": 110,
            "src": "58:52:9",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2113,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "137:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 2114,
                "nodeType": "InheritanceSpecifier",
                "src": "137:7:9"
              }
            ],
            "contractDependencies": [
              109,
              1577
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2171,
            "linearizedBaseContracts": [
              2171,
              109,
              1577
            ],
            "name": "Authorizable",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "b9181611",
                "id": 2118,
                "mutability": "mutable",
                "name": "authorized",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2171,
                "src": "151:42:9",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 2117,
                  "keyType": {
                    "id": 2115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "159:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "151:24:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 2116,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "170:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2134,
                  "nodeType": "Block",
                  "src": "226:84:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2121,
                                "name": "authorized",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2118,
                                "src": "244:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 2124,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2122,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "255:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "255:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "244:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2125,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44,
                                  "src": "270:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 2126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "270:7:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2127,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "281:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "281:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "270:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "244:47:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2120,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "236:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "236:56:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2132,
                      "nodeType": "ExpressionStatement",
                      "src": "236:56:9"
                    },
                    {
                      "id": 2133,
                      "nodeType": "PlaceholderStatement",
                      "src": "302:1:9"
                    }
                  ]
                },
                "documentation": null,
                "id": 2135,
                "name": "onlyAuthorized",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2119,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "223:2:9"
                },
                "src": "200:110:9",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2148,
                  "nodeType": "Block",
                  "src": "372:42:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2142,
                            "name": "authorized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2118,
                            "src": "382:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 2144,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2143,
                            "name": "_toAdd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2137,
                            "src": "393:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "382:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "403:4:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "382:25:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2147,
                      "nodeType": "ExpressionStatement",
                      "src": "382:25:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "cf1c316a",
                "id": 2149,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2140,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2139,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "362:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "362:9:9"
                  }
                ],
                "name": "addAuthorized",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2138,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2137,
                      "mutability": "mutable",
                      "name": "_toAdd",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2149,
                      "src": "339:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2136,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "339:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "338:16:9"
                },
                "returnParameters": {
                  "id": 2141,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "372:0:9"
                },
                "scope": 2171,
                "src": "316:98:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2169,
                  "nodeType": "Block",
                  "src": "482:88:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2157,
                              "name": "_toRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2151,
                              "src": "500:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2158,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "513:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "513:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "500:23:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2156,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "492:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "492:32:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2162,
                      "nodeType": "ExpressionStatement",
                      "src": "492:32:9"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2163,
                            "name": "authorized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2118,
                            "src": "534:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 2165,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2164,
                            "name": "_toRemove",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2151,
                            "src": "545:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "534:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "558:5:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "534:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2168,
                      "nodeType": "ExpressionStatement",
                      "src": "534:29:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "485d7d94",
                "id": 2170,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2154,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2153,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "472:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "472:9:9"
                  }
                ],
                "name": "removeAuthorized",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2152,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2151,
                      "mutability": "mutable",
                      "name": "_toRemove",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2170,
                      "src": "446:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2150,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "446:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "445:19:9"
                },
                "returnParameters": {
                  "id": 2155,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "482:0:9"
                },
                "scope": 2171,
                "src": "420:150:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2172,
            "src": "112:460:9"
          }
        ],
        "src": "33:539:9"
      }
    },
    "contracts/CoinFlip.sol": {
      "id": 10,
      "AST": {
        "absolutePath": "contracts/CoinFlip.sol",
        "exportedSymbols": {
          "CoinFlip": [
            2347
          ]
        },
        "id": 2348,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2173,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:10"
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 2174,
            "nodeType": "ImportDirective",
            "scope": 2348,
            "sourceUnit": 465,
            "src": "88:51:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 2175,
            "nodeType": "ImportDirective",
            "scope": 2348,
            "sourceUnit": 1046,
            "src": "140:56:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 2176,
            "nodeType": "ImportDirective",
            "scope": 2348,
            "sourceUnit": 110,
            "src": "197:52:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/Authorizable.sol",
            "file": "./Authorizable.sol",
            "id": 2177,
            "nodeType": "ImportDirective",
            "scope": 2348,
            "sourceUnit": 2172,
            "src": "250:28:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2178,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "305:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 2179,
                "nodeType": "InheritanceSpecifier",
                "src": "305:7:10"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2180,
                  "name": "Authorizable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2171,
                  "src": "314:12:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Authorizable_$2171",
                    "typeString": "contract Authorizable"
                  }
                },
                "id": 2181,
                "nodeType": "InheritanceSpecifier",
                "src": "314:12:10"
              }
            ],
            "contractDependencies": [
              109,
              1577,
              2171
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2347,
            "linearizedBaseContracts": [
              2347,
              2171,
              109,
              1577
            ],
            "name": "CoinFlip",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 2184,
                "libraryName": {
                  "contractScope": null,
                  "id": 2182,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "343:8:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "337:27:10",
                "typeName": {
                  "id": 2183,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "356:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "9b87dd91",
                "id": 2186,
                "mutability": "mutable",
                "name": "minimumbet",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "374:25:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2185,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "374:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "b9435c9d",
                "id": 2188,
                "mutability": "mutable",
                "name": "_elephant",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "410:24:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2187,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "410:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "144f2f94",
                "id": 2190,
                "mutability": "mutable",
                "name": "_burn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "445:20:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2189,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "445:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "50152cd0",
                "id": 2192,
                "mutability": "mutable",
                "name": "betsplacedglobally",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "475:33:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2191,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "475:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "49c64f46",
                "id": 2194,
                "mutability": "mutable",
                "name": "lastnumberwin",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "519:28:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2193,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "519:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "8f7d6278",
                "id": 2196,
                "mutability": "mutable",
                "name": "_player",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2347,
                "src": "558:22:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2195,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "558:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 2204,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2203,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2198,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "_from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2204,
                      "src": "597:21:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2197,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "597:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2200,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "_id",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2204,
                      "src": "620:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2199,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "620:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2202,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "_value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2204,
                      "src": "641:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2201,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "641:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "596:57:10"
                },
                "src": "583:71:10"
              },
              {
                "body": {
                  "id": 2223,
                  "nodeType": "Block",
                  "src": "822:117:10",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2211,
                          "name": "_elephant",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2188,
                          "src": "836:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2212,
                          "name": "ELEPHANT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2206,
                          "src": "848:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "836:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2214,
                      "nodeType": "ExpressionStatement",
                      "src": "836:20:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2215,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2190,
                          "src": "870:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2216,
                          "name": "BURN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2208,
                          "src": "878:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "870:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2218,
                      "nodeType": "ExpressionStatement",
                      "src": "870:12:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2219,
                          "name": "minimumbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2186,
                          "src": "896:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "35303030303030303030303030303030303030",
                          "id": 2220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "909:19:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5000000000000000000_by_1",
                            "typeString": "int_const 5000000000000000000"
                          },
                          "value": "5000000000000000000"
                        },
                        "src": "896:32:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2222,
                      "nodeType": "ExpressionStatement",
                      "src": "896:32:10"
                    }
                  ]
                },
                "documentation": null,
                "id": 2224,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2209,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2206,
                      "mutability": "mutable",
                      "name": "ELEPHANT",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2224,
                      "src": "762:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2205,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "762:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2208,
                      "mutability": "mutable",
                      "name": "BURN",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2224,
                      "src": "792:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2207,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "792:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "748:66:10"
                },
                "returnParameters": {
                  "id": 2210,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "822:0:10"
                },
                "scope": 2347,
                "src": "737:202:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2299,
                  "nodeType": "Block",
                  "src": "1014:747:10",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2232,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2228,
                              "src": "1033:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2233,
                              "name": "minimumbet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2186,
                              "src": "1043:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1033:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574",
                            "id": 2235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1055:44:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_74f12f5a14928cb9736d7ff91c45a2b3b087310322164d96e5bad3df283402e7",
                              "typeString": "literal_string \"Amount is not greater than the minimum bet\""
                            },
                            "value": "Amount is not greater than the minimum bet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_74f12f5a14928cb9736d7ff91c45a2b3b087310322164d96e5bad3df283402e7",
                              "typeString": "literal_string \"Amount is not greater than the minimum bet\""
                            }
                          ],
                          "id": 2231,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1025:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1025:75:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2237,
                      "nodeType": "ExpressionStatement",
                      "src": "1025:75:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2243,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1152:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1152:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2240,
                                      "name": "_elephant",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2188,
                                      "src": "1131:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2239,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1045,
                                    "src": "1124:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 2241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1124:17:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 2242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 984,
                                "src": "1124:27:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 2245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1124:39:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2246,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2228,
                              "src": "1167:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1124:49:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768",
                            "id": 2248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1175:43:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_60045cbb3e2b7528ca05d7096903568c943ba33e70a9782f76a2262aa00a4b97",
                              "typeString": "literal_string \"placeBet: betting asset amount not enough\""
                            },
                            "value": "placeBet: betting asset amount not enough"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_60045cbb3e2b7528ca05d7096903568c943ba33e70a9782f76a2262aa00a4b97",
                              "typeString": "literal_string \"placeBet: betting asset amount not enough\""
                            }
                          ],
                          "id": 2238,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1116:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1116:103:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2250,
                      "nodeType": "ExpressionStatement",
                      "src": "1116:103:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2256,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1273:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1273:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2260,
                                    "name": "_burn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2190,
                                    "src": "1293:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1285:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2258,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1285:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1285:14:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2262,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2228,
                                "src": "1301:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2253,
                                    "name": "_elephant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2188,
                                    "src": "1249:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2252,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1045,
                                  "src": "1242:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1242:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1026,
                              "src": "1242:30:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1242:66:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "706c6163654265743a207472616e73666572206661696c6564",
                            "id": 2264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1310:27:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_291aea35b7d02d95930f2e2713a41e8b31771633df146e7011912259a762f4d0",
                              "typeString": "literal_string \"placeBet: transfer failed\""
                            },
                            "value": "placeBet: transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_291aea35b7d02d95930f2e2713a41e8b31771633df146e7011912259a762f4d0",
                              "typeString": "literal_string \"placeBet: transfer failed\""
                            }
                          ],
                          "id": 2251,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1234:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1234:104:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2266,
                      "nodeType": "ExpressionStatement",
                      "src": "1234:104:10"
                    },
                    {
                      "assignments": [
                        2268
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2268,
                          "mutability": "mutable",
                          "name": "numberGenerated",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2299,
                          "src": "1504:23:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2267,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1504:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2276,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2269,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "1531:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 2270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1531:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 2271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1546:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1531:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2273,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1530:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1551:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1530:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1504:48:10"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2277,
                          "name": "number",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2226,
                          "src": "1564:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2278,
                          "name": "numberGenerated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2268,
                          "src": "1574:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1564:25:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2295,
                      "nodeType": "IfStatement",
                      "src": "1561:147:10",
                      "trueBody": {
                        "id": 2294,
                        "nodeType": "Block",
                        "src": "1590:118:10",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2285,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1635:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 2286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1635:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2289,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2287,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2228,
                                        "src": "1647:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1656:1:10",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "1647:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2282,
                                          "name": "_elephant",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2188,
                                          "src": "1615:9:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2281,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1045,
                                        "src": "1608:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 2283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1608:17:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$1045",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 994,
                                    "src": "1608:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1608:50:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032",
                                  "id": 2291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1660:36:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_32d2f91cc4d47df98c5f8b751cda8f48015878d20e4a17ce8ba1520e67c19e30",
                                    "typeString": "literal_string \"settle: winner transfer failed - 2\""
                                  },
                                  "value": "settle: winner transfer failed - 2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_32d2f91cc4d47df98c5f8b751cda8f48015878d20e4a17ce8ba1520e67c19e30",
                                    "typeString": "literal_string \"settle: winner transfer failed - 2\""
                                  }
                                ],
                                "id": 2280,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "1600:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 2292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1600:97:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2293,
                            "nodeType": "ExpressionStatement",
                            "src": "1600:97:10"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "++",
                        "prefix": false,
                        "src": "1727:20:10",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2296,
                          "name": "betsplacedglobally",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2192,
                          "src": "1727:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2298,
                      "nodeType": "ExpressionStatement",
                      "src": "1727:20:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4afe62b5",
                "id": 2300,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "placeBet",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2229,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2226,
                      "mutability": "mutable",
                      "name": "number",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2300,
                      "src": "967:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2225,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "967:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2228,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2300,
                      "src": "983:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2227,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "983:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "966:32:10"
                },
                "returnParameters": {
                  "id": 2230,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1014:0:10"
                },
                "scope": 2347,
                "src": "949:812:10",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2315,
                  "nodeType": "Block",
                  "src": "1831:62:10",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2311,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "1880:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CoinFlip_$2347",
                                  "typeString": "contract CoinFlip"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_CoinFlip_$2347",
                                  "typeString": "contract CoinFlip"
                                }
                              ],
                              "id": 2310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1872:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2309,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1872:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1872:13:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2306,
                                "name": "_elephant",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2188,
                                "src": "1851:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2305,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "1844:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 2307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1844:17:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "1844:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 2313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1844:42:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2304,
                      "id": 2314,
                      "nodeType": "Return",
                      "src": "1837:49:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "30e4f9aa",
                "id": 2316,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "contractbalance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2301,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1798:2:10"
                },
                "returnParameters": {
                  "id": 2304,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2303,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2316,
                      "src": "1822:7:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2302,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1822:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1821:9:10"
                },
                "scope": 2347,
                "src": "1774:119:10",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2327,
                  "nodeType": "Block",
                  "src": "1959:32:10",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2323,
                          "name": "minimumbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2186,
                          "src": "1965:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2324,
                          "name": "newbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2318,
                          "src": "1978:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1965:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2326,
                      "nodeType": "ExpressionStatement",
                      "src": "1965:19:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b784c13e",
                "id": 2328,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2321,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2320,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "1938:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1938:14:10"
                  }
                ],
                "name": "changeminbet",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2319,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2318,
                      "mutability": "mutable",
                      "name": "newbet",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2328,
                      "src": "1922:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2317,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1922:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1921:16:10"
                },
                "returnParameters": {
                  "id": 2322,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1959:0:10"
                },
                "scope": 2347,
                "src": "1900:91:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2345,
                  "nodeType": "Block",
                  "src": "2035:79:10",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2338,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2076:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2076:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2340,
                                  "name": "contractbalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2316,
                                  "src": "2088:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2088:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2335,
                                    "name": "_elephant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2188,
                                    "src": "2056:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2334,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1045,
                                  "src": "2049:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2049:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 994,
                              "src": "2049:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2049:57:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2333,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2041:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2041:66:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2344,
                      "nodeType": "ExpressionStatement",
                      "src": "2041:66:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3ccfd60b",
                "id": 2346,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2331,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2330,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "2025:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2025:9:10"
                  }
                ],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2329,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2015:2:10"
                },
                "returnParameters": {
                  "id": 2332,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2035:0:10"
                },
                "scope": 2347,
                "src": "1998:116:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2348,
            "src": "284:1837:10"
          }
        ],
        "src": "33:2088:10"
      }
    },
    "contracts/Dice.sol": {
      "id": 11,
      "AST": {
        "absolutePath": "contracts/Dice.sol",
        "exportedSymbols": {
          "Dice": [
            2764
          ]
        },
        "id": 2765,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2349,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:11"
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 2350,
            "nodeType": "ImportDirective",
            "scope": 2765,
            "sourceUnit": 465,
            "src": "58:51:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 2351,
            "nodeType": "ImportDirective",
            "scope": 2765,
            "sourceUnit": 1046,
            "src": "110:56:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 2352,
            "nodeType": "ImportDirective",
            "scope": 2765,
            "sourceUnit": 110,
            "src": "167:52:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/Authorizable.sol",
            "file": "./Authorizable.sol",
            "id": 2353,
            "nodeType": "ImportDirective",
            "scope": 2765,
            "sourceUnit": 2172,
            "src": "220:28:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2354,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "271:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 2355,
                "nodeType": "InheritanceSpecifier",
                "src": "271:7:11"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2356,
                  "name": "Authorizable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2171,
                  "src": "280:12:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Authorizable_$2171",
                    "typeString": "contract Authorizable"
                  }
                },
                "id": 2357,
                "nodeType": "InheritanceSpecifier",
                "src": "280:12:11"
              }
            ],
            "contractDependencies": [
              109,
              1577,
              2171
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2764,
            "linearizedBaseContracts": [
              2764,
              2171,
              109,
              1577
            ],
            "name": "Dice",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 2360,
                "libraryName": {
                  "contractScope": null,
                  "id": 2358,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "309:8:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "303:27:11",
                "typeName": {
                  "id": 2359,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "322:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "canonicalName": "Dice.Bet",
                "id": 2367,
                "members": [
                  {
                    "constant": false,
                    "id": 2362,
                    "mutability": "mutable",
                    "name": "degen",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 2367,
                    "src": "365:13:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 2361,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "365:7:11",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 2364,
                    "mutability": "mutable",
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 2367,
                    "src": "392:14:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 2363,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "392:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 2366,
                    "mutability": "mutable",
                    "name": "number",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 2367,
                    "src": "420:14:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 2365,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "420:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Bet",
                "nodeType": "StructDefinition",
                "scope": 2764,
                "src": "340:105:11",
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "5d5391d5",
                "id": 2369,
                "mutability": "mutable",
                "name": "maximumBets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "455:26:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2368,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "9b87dd91",
                "id": 2371,
                "mutability": "mutable",
                "name": "minimumbet",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "491:25:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2370,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "491:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "b9435c9d",
                "id": 2373,
                "mutability": "mutable",
                "name": "_elephant",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "527:24:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2372,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "527:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "144f2f94",
                "id": 2375,
                "mutability": "mutable",
                "name": "_burn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "562:20:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2374,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "562:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "2ca8c6d3",
                "id": 2377,
                "mutability": "mutable",
                "name": "numberOfBets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "593:27:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2376,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "593:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "49c64f46",
                "id": 2379,
                "mutability": "mutable",
                "name": "lastnumberwin",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "630:28:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2378,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "630:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "41587823",
                "id": 2382,
                "mutability": "mutable",
                "name": "_players",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "669:25:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "669:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2381,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "669:9:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "e957b88f",
                "id": 2385,
                "mutability": "mutable",
                "name": "tenbets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "706:24:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 2383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "706:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2384,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "706:9:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f64452ba",
                "id": 2390,
                "mutability": "mutable",
                "name": "_guesses",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "776:45:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                  "typeString": "mapping(uint256 => address[])"
                },
                "typeName": {
                  "id": 2389,
                  "keyType": {
                    "id": 2386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "784:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "776:29:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                    "typeString": "mapping(uint256 => address[])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 2387,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "795:7:11",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2388,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "795:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "356476f0",
                "id": 2394,
                "mutability": "mutable",
                "name": "_totals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "867:42:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 2393,
                  "keyType": {
                    "id": 2391,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "875:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "867:27:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 2392,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "886:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "87d68367",
                "id": 2398,
                "mutability": "mutable",
                "name": "_bets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2764,
                "src": "920:36:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bet_$2367_storage_$",
                  "typeString": "mapping(address => struct Dice.Bet)"
                },
                "typeName": {
                  "id": 2397,
                  "keyType": {
                    "id": 2395,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "928:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "920:23:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bet_$2367_storage_$",
                    "typeString": "mapping(address => struct Dice.Bet)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 2396,
                    "name": "Bet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2367,
                    "src": "939:3:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bet_$2367_storage_ptr",
                      "typeString": "struct Dice.Bet"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2423,
                  "nodeType": "Block",
                  "src": "1081:152:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2407,
                          "name": "_elephant",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2373,
                          "src": "1095:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2408,
                          "name": "ELEPHANT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2400,
                          "src": "1107:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1095:20:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2410,
                      "nodeType": "ExpressionStatement",
                      "src": "1095:20:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2411,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2375,
                          "src": "1129:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2412,
                          "name": "BURN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2402,
                          "src": "1137:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1129:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2414,
                      "nodeType": "ExpressionStatement",
                      "src": "1129:12:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2415,
                          "name": "maximumBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2369,
                          "src": "1155:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2416,
                          "name": "MAXBETS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2404,
                          "src": "1169:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1155:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2418,
                      "nodeType": "ExpressionStatement",
                      "src": "1155:21:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2419,
                          "name": "minimumbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2371,
                          "src": "1190:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "35303030303030303030303030303030303030",
                          "id": 2420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1203:19:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5000000000000000000_by_1",
                            "typeString": "int_const 5000000000000000000"
                          },
                          "value": "5000000000000000000"
                        },
                        "src": "1190:32:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2422,
                      "nodeType": "ExpressionStatement",
                      "src": "1190:32:11"
                    }
                  ]
                },
                "documentation": null,
                "id": 2424,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2405,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2400,
                      "mutability": "mutable",
                      "name": "ELEPHANT",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2424,
                      "src": "992:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2399,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "992:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2402,
                      "mutability": "mutable",
                      "name": "BURN",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2424,
                      "src": "1022:12:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2401,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1022:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2404,
                      "mutability": "mutable",
                      "name": "MAXBETS",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2424,
                      "src": "1048:15:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2403,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1048:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "978:95:11"
                },
                "returnParameters": {
                  "id": 2406,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1081:0:11"
                },
                "scope": 2764,
                "src": "967:266:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2510,
                  "nodeType": "Block",
                  "src": "1308:768:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2432,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "1327:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2433,
                              "name": "minimumbet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2371,
                              "src": "1337:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1327:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416d6f756e74206973206e6f742067726561746572207468616e20746865206d696e696d756d20626574",
                            "id": 2435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1349:44:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_74f12f5a14928cb9736d7ff91c45a2b3b087310322164d96e5bad3df283402e7",
                              "typeString": "literal_string \"Amount is not greater than the minimum bet\""
                            },
                            "value": "Amount is not greater than the minimum bet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_74f12f5a14928cb9736d7ff91c45a2b3b087310322164d96e5bad3df283402e7",
                              "typeString": "literal_string \"Amount is not greater than the minimum bet\""
                            }
                          ],
                          "id": 2431,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1319:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1319:75:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2437,
                      "nodeType": "ExpressionStatement",
                      "src": "1319:75:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2443,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1445:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1445:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2440,
                                      "name": "_elephant",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2373,
                                      "src": "1424:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2439,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1045,
                                    "src": "1417:6:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1417:17:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 2442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 984,
                                "src": "1417:27:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 2445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1417:39:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2446,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "1460:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1417:49:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "706c6163654265743a2062657474696e6720617373657420616d6f756e74206e6f7420656e6f756768",
                            "id": 2448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1468:43:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_60045cbb3e2b7528ca05d7096903568c943ba33e70a9782f76a2262aa00a4b97",
                              "typeString": "literal_string \"placeBet: betting asset amount not enough\""
                            },
                            "value": "placeBet: betting asset amount not enough"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_60045cbb3e2b7528ca05d7096903568c943ba33e70a9782f76a2262aa00a4b97",
                              "typeString": "literal_string \"placeBet: betting asset amount not enough\""
                            }
                          ],
                          "id": 2438,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1409:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1409:103:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2450,
                      "nodeType": "ExpressionStatement",
                      "src": "1409:103:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2456,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1566:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1566:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2460,
                                    "name": "_burn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2375,
                                    "src": "1586:5:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1578:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2458,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1578:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1578:14:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2462,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2428,
                                "src": "1594:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2453,
                                    "name": "_elephant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2373,
                                    "src": "1542:9:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2452,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1045,
                                  "src": "1535:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1535:17:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1026,
                              "src": "1535:30:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1535:66:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "706c6163654265743a207472616e73666572206661696c6564",
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1603:27:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_291aea35b7d02d95930f2e2713a41e8b31771633df146e7011912259a762f4d0",
                              "typeString": "literal_string \"placeBet: transfer failed\""
                            },
                            "value": "placeBet: transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_291aea35b7d02d95930f2e2713a41e8b31771633df146e7011912259a762f4d0",
                              "typeString": "literal_string \"placeBet: transfer failed\""
                            }
                          ],
                          "id": 2451,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1527:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1527:104:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2466,
                      "nodeType": "ExpressionStatement",
                      "src": "1527:104:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2470,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1701:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1701:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2467,
                            "name": "_players",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2382,
                            "src": "1687:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 2469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1687:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1687:25:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2473,
                      "nodeType": "ExpressionStatement",
                      "src": "1687:25:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2474,
                            "name": "_bets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2398,
                            "src": "1757:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bet_$2367_storage_$",
                              "typeString": "mapping(address => struct Dice.Bet storage ref)"
                            }
                          },
                          "id": 2477,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1763:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1763:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1757:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bet_$2367_storage",
                            "typeString": "struct Dice.Bet storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2479,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1781:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1781:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2481,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "1793:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2482,
                              "name": "number",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2426,
                              "src": "1801:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2478,
                            "name": "Bet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2367,
                            "src": "1777:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Bet_$2367_storage_ptr_$",
                              "typeString": "type(struct Dice.Bet storage pointer)"
                            }
                          },
                          "id": 2483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1777:31:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bet_$2367_memory_ptr",
                            "typeString": "struct Dice.Bet memory"
                          }
                        },
                        "src": "1757:51:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bet_$2367_storage",
                          "typeString": "struct Dice.Bet storage ref"
                        }
                      },
                      "id": 2485,
                      "nodeType": "ExpressionStatement",
                      "src": "1757:51:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2490,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1882:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1882:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2486,
                              "name": "_guesses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2390,
                              "src": "1860:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(uint256 => address[] storage ref)"
                              }
                            },
                            "id": 2488,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2487,
                              "name": "number",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2426,
                              "src": "1869:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1860:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1860:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1860:33:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2493,
                      "nodeType": "ExpressionStatement",
                      "src": "1860:33:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "_totals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2394,
                            "src": "1939:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2496,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2426,
                            "src": "1947:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1939:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2497,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2428,
                          "src": "1958:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1939:25:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2499,
                      "nodeType": "ExpressionStatement",
                      "src": "1939:25:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "++",
                        "prefix": false,
                        "src": "1979:14:11",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2500,
                          "name": "numberOfBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2377,
                          "src": "1979:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2502,
                      "nodeType": "ExpressionStatement",
                      "src": "1979:14:11"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2503,
                          "name": "numberOfBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2377,
                          "src": "2014:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2504,
                          "name": "maximumBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2369,
                          "src": "2030:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2014:27:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2509,
                      "nodeType": "IfStatement",
                      "src": "2010:55:11",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2506,
                            "name": "generateNumberWinner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2584,
                            "src": "2043:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2043:22:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2508,
                        "nodeType": "ExpressionStatement",
                        "src": "2043:22:11"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4afe62b5",
                "id": 2511,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "placeBet",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2429,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2426,
                      "mutability": "mutable",
                      "name": "number",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2511,
                      "src": "1261:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2425,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1261:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2428,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2511,
                      "src": "1277:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2427,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1277:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1260:32:11"
                },
                "returnParameters": {
                  "id": 2430,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1308:0:11"
                },
                "scope": 2764,
                "src": "1243:833:11",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2546,
                  "nodeType": "Block",
                  "src": "2136:159:11",
                  "statements": [
                    {
                      "body": {
                        "id": 2539,
                        "nodeType": "Block",
                        "src": "2199:59:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2529,
                                  "name": "tenbets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2385,
                                  "src": "2217:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                    "typeString": "uint256[] storage ref"
                                  }
                                },
                                "id": 2531,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2530,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2517,
                                  "src": "2225:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2217:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2532,
                                  "name": "tenbets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2385,
                                  "src": "2230:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                    "typeString": "uint256[] storage ref"
                                  }
                                },
                                "id": 2536,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2533,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2517,
                                    "src": "2238:1:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2241:1:11",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2238:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2230:13:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2217:26:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2538,
                            "nodeType": "ExpressionStatement",
                            "src": "2217:26:11"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2520,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2517,
                          "src": "2171:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2521,
                              "name": "tenbets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2385,
                              "src": "2175:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 2522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2175:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2192:1:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2175:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2171:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2540,
                      "initializationExpression": {
                        "assignments": [
                          2517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2517,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2540,
                            "src": "2155:6:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2516,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2155:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2519,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 2518,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2513,
                          "src": "2164:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2155:14:11"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "2195:3:11",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2526,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2517,
                            "src": "2195:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2528,
                        "nodeType": "ExpressionStatement",
                        "src": "2195:3:11"
                      },
                      "nodeType": "ForStatement",
                      "src": "2151:107:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2541,
                            "name": "tenbets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2385,
                            "src": "2271:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 2543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pop",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2271:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 2544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2271:13:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2545,
                      "nodeType": "ExpressionStatement",
                      "src": "2271:13:11"
                    }
                  ]
                },
                "documentation": null,
                "id": 2547,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeorder",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2514,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2513,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2547,
                      "src": "2115:10:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2512,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2115:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2114:12:11"
                },
                "returnParameters": {
                  "id": 2515,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2136:0:11"
                },
                "scope": 2764,
                "src": "2094:201:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2583,
                  "nodeType": "Block",
                  "src": "2344:274:11",
                  "statements": [
                    {
                      "assignments": [
                        2551
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2551,
                          "mutability": "mutable",
                          "name": "numberGenerated",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2583,
                          "src": "2358:23:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2550,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2358:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2559,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2552,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "2385:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 2553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2385:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "36",
                                "id": 2554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2400:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_6_by_1",
                                  "typeString": "int_const 6"
                                },
                                "value": "6"
                              },
                              "src": "2385:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2556,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2384:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2405:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "2384:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2358:48:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2563,
                            "name": "numberGenerated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2551,
                            "src": "2433:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2560,
                            "name": "tenbets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2385,
                            "src": "2420:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 2562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2420:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 2564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2420:29:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2565,
                      "nodeType": "ExpressionStatement",
                      "src": "2420:29:11"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2566,
                            "name": "tenbets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2385,
                            "src": "2481:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 2567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2481:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2498:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "src": "2481:18:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2574,
                      "nodeType": "IfStatement",
                      "src": "2478:37:11",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2513:1:11",
                              "subdenomination": null,
                              "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": 2570,
                            "name": "removeorder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2547,
                            "src": "2501:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2501:14:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2573,
                        "nodeType": "ExpressionStatement",
                        "src": "2501:14:11"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2575,
                          "name": "lastnumberwin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2379,
                          "src": "2529:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2576,
                          "name": "numberGenerated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2551,
                          "src": "2545:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2529:31:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2578,
                      "nodeType": "ExpressionStatement",
                      "src": "2529:31:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "numberGenerated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2551,
                            "src": "2591:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2579,
                          "name": "distributePrizes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2705,
                          "src": "2574:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 2581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2574:33:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2582,
                      "nodeType": "ExpressionStatement",
                      "src": "2574:33:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0a50e361",
                "id": 2584,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "generateNumberWinner",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2548,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2334:2:11"
                },
                "returnParameters": {
                  "id": 2549,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2344:0:11"
                },
                "scope": 2764,
                "src": "2305:313:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2704,
                  "nodeType": "Block",
                  "src": "2689:838:11",
                  "statements": [
                    {
                      "assignments": [
                        2593
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2593,
                          "mutability": "mutable",
                          "name": "winners",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2704,
                          "src": "2703:24:11",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 2591,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2703:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2592,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "2703:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2597,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2594,
                          "name": "_guesses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2390,
                          "src": "2730:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(uint256 => address[] storage ref)"
                          }
                        },
                        "id": 2596,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2595,
                          "name": "numberGenerated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2586,
                          "src": "2739:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2730:25:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2703:52:11"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2598,
                            "name": "winners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2593,
                            "src": "2774:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2774:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2791:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2774:18:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2647,
                      "nodeType": "IfStatement",
                      "src": "2770:364:11",
                      "trueBody": {
                        "id": 2646,
                        "nodeType": "Block",
                        "src": "2794:340:11",
                        "statements": [
                          {
                            "body": {
                              "id": 2644,
                              "nodeType": "Block",
                              "src": "2857:263:11",
                              "statements": [
                                {
                                  "assignments": [
                                    2614
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2614,
                                      "mutability": "mutable",
                                      "name": "winner",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2644,
                                      "src": "2879:17:11",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bet_$2367_memory_ptr",
                                        "typeString": "struct Dice.Bet"
                                      },
                                      "typeName": {
                                        "contractScope": null,
                                        "id": 2613,
                                        "name": "Bet",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 2367,
                                        "src": "2879:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Bet_$2367_storage_ptr",
                                          "typeString": "struct Dice.Bet"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2620,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2615,
                                      "name": "_bets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2398,
                                      "src": "2899:5:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bet_$2367_storage_$",
                                        "typeString": "mapping(address => struct Dice.Bet storage ref)"
                                      }
                                    },
                                    "id": 2619,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2616,
                                        "name": "winners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2593,
                                        "src": "2905:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 2618,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 2617,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2603,
                                        "src": "2913:1:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2905:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2899:17:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bet_$2367_storage",
                                      "typeString": "struct Dice.Bet storage ref"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "2879:37:11"
                                },
                                {
                                  "assignments": [
                                    2622
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2622,
                                      "mutability": "mutable",
                                      "name": "share",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2644,
                                      "src": "2938:13:11",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2621,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2938:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2631,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "313032",
                                        "id": 2629,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2981:3:11",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_102_by_1",
                                          "typeString": "int_const 102"
                                        },
                                        "value": "102"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_102_by_1",
                                          "typeString": "int_const 102"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "363030",
                                            "id": 2626,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2972:3:11",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_600_by_1",
                                              "typeString": "int_const 600"
                                            },
                                            "value": "600"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_600_by_1",
                                              "typeString": "int_const 600"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2623,
                                              "name": "winner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2614,
                                              "src": "2954:6:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Bet_$2367_memory_ptr",
                                                "typeString": "struct Dice.Bet memory"
                                              }
                                            },
                                            "id": 2624,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "amount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2364,
                                            "src": "2954:13:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2625,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "2954:17:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2627,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2954:22:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2628,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "2954:26:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2630,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2954:31:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "2938:47:11"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2637,
                                              "name": "winner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2614,
                                              "src": "3042:6:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Bet_$2367_memory_ptr",
                                                "typeString": "struct Dice.Bet memory"
                                              }
                                            },
                                            "id": 2638,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "degen",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2362,
                                            "src": "3042:12:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 2639,
                                            "name": "share",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2622,
                                            "src": "3056:5:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2634,
                                                "name": "_elephant",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2373,
                                                "src": "3022:9:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 2633,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1045,
                                              "src": "3015:6:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 2635,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3015:17:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$1045",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 2636,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 994,
                                          "src": "3015:26:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (address,uint256) external returns (bool)"
                                          }
                                        },
                                        "id": 2640,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3015:47:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "736574746c653a2077696e6e6572207472616e73666572206661696c6564202d2032",
                                        "id": 2641,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3064:36:11",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_32d2f91cc4d47df98c5f8b751cda8f48015878d20e4a17ce8ba1520e67c19e30",
                                          "typeString": "literal_string \"settle: winner transfer failed - 2\""
                                        },
                                        "value": "settle: winner transfer failed - 2"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_32d2f91cc4d47df98c5f8b751cda8f48015878d20e4a17ce8ba1520e67c19e30",
                                          "typeString": "literal_string \"settle: winner transfer failed - 2\""
                                        }
                                      ],
                                      "id": 2632,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "3007:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 2642,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3007:94:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2643,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3007:94:11"
                                }
                              ]
                            },
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2606,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2603,
                                "src": "2832:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2607,
                                  "name": "winners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2593,
                                  "src": "2836:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 2608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2836:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2832:18:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2645,
                            "initializationExpression": {
                              "assignments": [
                                2603
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2603,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2645,
                                  "src": "2817:9:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2602,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2817:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2605,
                              "initialValue": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2829:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2817:13:11"
                            },
                            "loopExpression": {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "2852:3:11",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 2610,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2603,
                                  "src": "2852:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2612,
                              "nodeType": "ExpressionStatement",
                              "src": "2852:3:11"
                            },
                            "nodeType": "ForStatement",
                            "src": "2812:308:11"
                          }
                        ]
                      }
                    },
                    {
                      "body": {
                        "id": 2665,
                        "nodeType": "Block",
                        "src": "3194:62:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "delete",
                              "prefix": true,
                              "src": "3216:25:11",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2658,
                                  "name": "_bets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2398,
                                  "src": "3223:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bet_$2367_storage_$",
                                    "typeString": "mapping(address => struct Dice.Bet storage ref)"
                                  }
                                },
                                "id": 2662,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2659,
                                    "name": "_players",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2382,
                                    "src": "3229:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 2661,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2660,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2649,
                                    "src": "3238:1:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3229:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3223:18:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Bet_$2367_storage",
                                  "typeString": "struct Dice.Bet storage ref"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2664,
                            "nodeType": "ExpressionStatement",
                            "src": "3216:25:11"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2652,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2649,
                          "src": "3173:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2653,
                          "name": "minimumbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2371,
                          "src": "3177:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3173:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2666,
                      "initializationExpression": {
                        "assignments": [
                          2649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2649,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2666,
                            "src": "3158:9:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2648,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3158:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2651,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3170:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3158:13:11"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "3189:3:11",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2655,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2649,
                            "src": "3189:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2657,
                        "nodeType": "ExpressionStatement",
                        "src": "3189:3:11"
                      },
                      "nodeType": "ForStatement",
                      "src": "3153:103:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2667,
                          "name": "_players",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2382,
                          "src": "3270:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3295:1:11",
                              "subdenomination": null,
                              "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": 2670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3281:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2668,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3285:7:11",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2669,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3285:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 2672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3281:16:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "src": "3270:27:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 2674,
                      "nodeType": "ExpressionStatement",
                      "src": "3270:27:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "delete",
                        "prefix": true,
                        "src": "3311:19:11",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 2675,
                          "name": "numberOfBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2377,
                          "src": "3318:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2677,
                      "nodeType": "ExpressionStatement",
                      "src": "3311:19:11"
                    },
                    {
                      "body": {
                        "id": 2702,
                        "nodeType": "Block",
                        "src": "3377:140:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "delete",
                              "prefix": true,
                              "src": "3395:22:11",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2688,
                                  "name": "_guesses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2390,
                                  "src": "3402:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                    "typeString": "mapping(uint256 => address[] storage ref)"
                                  }
                                },
                                "id": 2692,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2689,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2679,
                                    "src": "3411:1:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2690,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3415:1:11",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3411:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3402:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2694,
                            "nodeType": "ExpressionStatement",
                            "src": "3395:22:11"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "delete",
                              "prefix": true,
                              "src": "3435:21:11",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2695,
                                  "name": "_totals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2394,
                                  "src": "3442:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2699,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2696,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2679,
                                    "src": "3450:1:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2697,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3454:1:11",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3450:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3442:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2701,
                            "nodeType": "ExpressionStatement",
                            "src": "3435:21:11"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2682,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2679,
                          "src": "3365:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 2683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3369:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "src": "3365:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2703,
                      "initializationExpression": {
                        "assignments": [
                          2679
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2679,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2703,
                            "src": "3350:9:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2678,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3350:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2681,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3362:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3350:13:11"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "3372:3:11",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2685,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2679,
                            "src": "3372:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2687,
                        "nodeType": "ExpressionStatement",
                        "src": "3372:3:11"
                      },
                      "nodeType": "ForStatement",
                      "src": "3345:172:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6ca3fc3b",
                "id": 2705,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "distributePrizes",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2587,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2586,
                      "mutability": "mutable",
                      "name": "numberGenerated",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2705,
                      "src": "2657:23:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2657:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2656:25:11"
                },
                "returnParameters": {
                  "id": 2588,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2689:0:11"
                },
                "scope": 2764,
                "src": "2631:896:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2720,
                  "nodeType": "Block",
                  "src": "3590:62:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2716,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "3639:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Dice_$2764",
                                  "typeString": "contract Dice"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Dice_$2764",
                                  "typeString": "contract Dice"
                                }
                              ],
                              "id": 2715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3631:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2714,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3631:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3631:13:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2711,
                                "name": "_elephant",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2373,
                                "src": "3610:9:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2710,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "3603:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 2712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3603:17:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 2713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "3603:27:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 2718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3603:42:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2709,
                      "id": 2719,
                      "nodeType": "Return",
                      "src": "3596:49:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "30e4f9aa",
                "id": 2721,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "contractbalance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2706,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3557:2:11"
                },
                "returnParameters": {
                  "id": 2709,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2708,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2721,
                      "src": "3581:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2707,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3581:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3580:9:11"
                },
                "scope": 2764,
                "src": "3533:119:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2732,
                  "nodeType": "Block",
                  "src": "3716:33:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2728,
                          "name": "maximumBets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2369,
                          "src": "3722:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2729,
                          "name": "newbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2723,
                          "src": "3736:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3722:20:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2731,
                      "nodeType": "ExpressionStatement",
                      "src": "3722:20:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bcb8aaf3",
                "id": 2733,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2726,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2725,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "3695:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3695:14:11"
                  }
                ],
                "name": "changemaxbet",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2724,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2723,
                      "mutability": "mutable",
                      "name": "newbet",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2733,
                      "src": "3679:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2722,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3679:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3678:16:11"
                },
                "returnParameters": {
                  "id": 2727,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3716:0:11"
                },
                "scope": 2764,
                "src": "3657:92:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2744,
                  "nodeType": "Block",
                  "src": "3815:32:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2740,
                          "name": "minimumbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2371,
                          "src": "3821:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2741,
                          "name": "newbet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2735,
                          "src": "3834:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3821:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2743,
                      "nodeType": "ExpressionStatement",
                      "src": "3821:19:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b784c13e",
                "id": 2745,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2738,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2737,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "3794:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3794:14:11"
                  }
                ],
                "name": "changeminbet",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2736,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2735,
                      "mutability": "mutable",
                      "name": "newbet",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2745,
                      "src": "3778:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2734,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3778:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3777:16:11"
                },
                "returnParameters": {
                  "id": 2739,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3815:0:11"
                },
                "scope": 2764,
                "src": "3756:91:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2762,
                  "nodeType": "Block",
                  "src": "3896:79:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2755,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3937:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3937:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2757,
                                  "name": "contractbalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2721,
                                  "src": "3949:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3949:17:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2752,
                                    "name": "_elephant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2373,
                                    "src": "3917:9:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2751,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1045,
                                  "src": "3910:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3910:17:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 994,
                              "src": "3910:26:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3910:57:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2750,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3902:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3902:66:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2761,
                      "nodeType": "ExpressionStatement",
                      "src": "3902:66:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3ccfd60b",
                "id": 2763,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2748,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2747,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "3881:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3881:14:11"
                  }
                ],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2746,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3871:2:11"
                },
                "returnParameters": {
                  "id": 2749,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3896:0:11"
                },
                "scope": 2764,
                "src": "3854:121:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2765,
            "src": "254:3728:11"
          }
        ],
        "src": "33:3949:11"
      }
    },
    "contracts/GovernanceToken.sol": {
      "id": 12,
      "AST": {
        "absolutePath": "contracts/GovernanceToken.sol",
        "exportedSymbols": {
          "GovernanceToken": [
            3987
          ]
        },
        "id": 3988,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2766,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:12"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "id": 2767,
            "nodeType": "ImportDirective",
            "scope": 3988,
            "sourceUnit": 968,
            "src": "58:55:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 2768,
            "nodeType": "ImportDirective",
            "scope": 3988,
            "sourceUnit": 110,
            "src": "114:52:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/Authorizable.sol",
            "file": "./Authorizable.sol",
            "id": 2769,
            "nodeType": "ImportDirective",
            "scope": 3988,
            "sourceUnit": 2172,
            "src": "167:28:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2770,
                  "name": "ERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 967,
                  "src": "248:5:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$967",
                    "typeString": "contract ERC20"
                  }
                },
                "id": 2771,
                "nodeType": "InheritanceSpecifier",
                "src": "248:5:12"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2772,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "255:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 2773,
                "nodeType": "InheritanceSpecifier",
                "src": "255:7:12"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2774,
                  "name": "Authorizable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2171,
                  "src": "264:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Authorizable_$2171",
                    "typeString": "contract Authorizable"
                  }
                },
                "id": 2775,
                "nodeType": "InheritanceSpecifier",
                "src": "264:12:12"
              }
            ],
            "contractDependencies": [
              109,
              967,
              1045,
              1577,
              2171
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 3987,
            "linearizedBaseContracts": [
              3987,
              2171,
              109,
              967,
              1045,
              1577
            ],
            "name": "GovernanceToken",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "id": 2777,
                "mutability": "mutable",
                "name": "_cap",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "283:20:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2776,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "283:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 2779,
                "mutability": "mutable",
                "name": "_totalLock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "309:26:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2778,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "309:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "functionSelector": "66fc237b",
                "id": 2781,
                "mutability": "mutable",
                "name": "lockFromBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "341:28:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2780,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "341:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "8e875e1a",
                "id": 2783,
                "mutability": "mutable",
                "name": "lockToBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "375:26:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2782,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "375:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f85b84a4",
                "id": 2785,
                "mutability": "mutable",
                "name": "manualMintLimit",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "407:30:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2784,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "407:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "e6b2fb4a",
                "id": 2788,
                "mutability": "mutable",
                "name": "manualMinted",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "443:31:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2786,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "443:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 2787,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "473:1:12",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2792,
                "mutability": "mutable",
                "name": "_locks",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "481:42:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 2791,
                  "keyType": {
                    "id": 2789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "489:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "481:27:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 2790,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "500:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 2796,
                "mutability": "mutable",
                "name": "_lastUnlockBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "529:52:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 2795,
                  "keyType": {
                    "id": 2793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "537:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "529:27:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 2794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "548:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 2802,
                "name": "Lock",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2801,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2798,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2802,
                      "src": "599:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2797,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "599:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2800,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2802,
                      "src": "619:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2799,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "619:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "598:35:12"
                },
                "src": "588:46:12"
              },
              {
                "body": {
                  "id": 2837,
                  "nodeType": "Block",
                  "src": "853:148:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2821,
                          "name": "_cap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2777,
                          "src": "863:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2822,
                          "name": "cap_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2808,
                          "src": "870:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "863:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2824,
                      "nodeType": "ExpressionStatement",
                      "src": "863:11:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2825,
                          "name": "manualMintLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2785,
                          "src": "884:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2826,
                          "name": "_manualMintLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2810,
                          "src": "902:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "884:34:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2828,
                      "nodeType": "ExpressionStatement",
                      "src": "884:34:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2829,
                          "name": "lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2781,
                          "src": "928:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2830,
                          "name": "_lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2812,
                          "src": "944:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "928:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2832,
                      "nodeType": "ExpressionStatement",
                      "src": "928:30:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2833,
                          "name": "lockToBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2783,
                          "src": "968:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2834,
                          "name": "_lockToBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2814,
                          "src": "982:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "968:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2836,
                      "nodeType": "ExpressionStatement",
                      "src": "968:26:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 2838,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2817,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "837:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2806,
                        "src": "844:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "id": 2819,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2816,
                      "name": "ERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 967,
                      "src": "831:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ERC20_$967_$",
                        "typeString": "type(contract ERC20)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "831:21:12"
                  }
                ],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2815,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2804,
                      "mutability": "mutable",
                      "name": "_name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "659:19:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2803,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "659:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2806,
                      "mutability": "mutable",
                      "name": "_symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "686:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2805,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "686:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2808,
                      "mutability": "mutable",
                      "name": "cap_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "715:12:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "715:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2810,
                      "mutability": "mutable",
                      "name": "_manualMintLimit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "735:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2809,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "735:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2812,
                      "mutability": "mutable",
                      "name": "_lockFromBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "767:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2811,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "767:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2814,
                      "mutability": "mutable",
                      "name": "_lockToBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2838,
                      "src": "797:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2813,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "797:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "651:172:12"
                },
                "returnParameters": {
                  "id": 2820,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "853:0:12"
                },
                "scope": 3987,
                "src": "640:361:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2846,
                  "nodeType": "Block",
                  "src": "1125:28:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2844,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2777,
                        "src": "1142:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2843,
                      "id": 2845,
                      "nodeType": "Return",
                      "src": "1135:11:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 2839,
                  "nodeType": "StructuredDocumentation",
                  "src": "1007:68:12",
                  "text": " @dev Returns the cap on the token's total supply."
                },
                "functionSelector": "355274ea",
                "id": 2847,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "cap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2840,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1092:2:12"
                },
                "returnParameters": {
                  "id": 2843,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2842,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2847,
                      "src": "1116:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2841,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1116:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1115:9:12"
                },
                "scope": 3987,
                "src": "1080:73:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2858,
                  "nodeType": "Block",
                  "src": "1299:31:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2854,
                          "name": "_cap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2777,
                          "src": "1309:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2855,
                          "name": "_newCap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2849,
                          "src": "1316:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1309:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2857,
                      "nodeType": "ExpressionStatement",
                      "src": "1309:14:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "40346c49",
                "id": 2859,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2852,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2851,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "1284:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1284:14:12"
                  }
                ],
                "name": "capUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2850,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2849,
                      "mutability": "mutable",
                      "name": "_newCap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2859,
                      "src": "1260:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2848,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1260:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1259:17:12"
                },
                "returnParameters": {
                  "id": 2853,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1299:0:12"
                },
                "scope": 3987,
                "src": "1241:89:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2870,
                  "nodeType": "Block",
                  "src": "1436:45:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2866,
                          "name": "lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2781,
                          "src": "1446:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2867,
                          "name": "_newLockFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2861,
                          "src": "1462:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1446:28:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2869,
                      "nodeType": "ExpressionStatement",
                      "src": "1446:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c38533c6",
                "id": 2871,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2864,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2863,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "1421:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1421:14:12"
                  }
                ],
                "name": "lockFromUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2862,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2861,
                      "mutability": "mutable",
                      "name": "_newLockFrom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2871,
                      "src": "1392:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2860,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1392:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1391:22:12"
                },
                "returnParameters": {
                  "id": 2865,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1436:0:12"
                },
                "scope": 3987,
                "src": "1368:113:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2882,
                  "nodeType": "Block",
                  "src": "1581:41:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2878,
                          "name": "lockToBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2783,
                          "src": "1591:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2879,
                          "name": "_newLockTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2873,
                          "src": "1605:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1591:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2881,
                      "nodeType": "ExpressionStatement",
                      "src": "1591:24:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0cb285e2",
                "id": 2883,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2876,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2875,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "1566:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1566:14:12"
                  }
                ],
                "name": "lockToUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2874,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2873,
                      "mutability": "mutable",
                      "name": "_newLockTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2883,
                      "src": "1539:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2872,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1539:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1538:20:12"
                },
                "returnParameters": {
                  "id": 2877,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1581:0:12"
                },
                "scope": 3987,
                "src": "1517:105:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2894,
                  "nodeType": "Block",
                  "src": "1684:53:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2891,
                            "name": "_totalLock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2779,
                            "src": "1719:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2888,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 553,
                              "src": "1701:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 2889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1701:13:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 313,
                          "src": "1701:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1701:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2887,
                      "id": 2893,
                      "nodeType": "Return",
                      "src": "1694:36:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fd3d27b8",
                "id": 2895,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "unlockedSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2884,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1651:2:12"
                },
                "returnParameters": {
                  "id": 2887,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2886,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2895,
                      "src": "1675:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2885,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1675:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1674:9:12"
                },
                "scope": 3987,
                "src": "1628:109:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2903,
                  "nodeType": "Block",
                  "src": "1797:35:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2900,
                          "name": "totalLock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2921,
                          "src": "1814:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1814:11:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2899,
                      "id": 2902,
                      "nodeType": "Return",
                      "src": "1807:18:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ca5c7b91",
                "id": 2904,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "lockedSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2896,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1764:2:12"
                },
                "returnParameters": {
                  "id": 2899,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2898,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2904,
                      "src": "1788:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2897,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1788:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1787:9:12"
                },
                "scope": 3987,
                "src": "1743:89:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2912,
                  "nodeType": "Block",
                  "src": "1897:37:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2909,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 553,
                          "src": "1914:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1914:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2908,
                      "id": 2911,
                      "nodeType": "Return",
                      "src": "1907:20:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9358928b",
                "id": 2913,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "circulatingSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2905,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1864:2:12"
                },
                "returnParameters": {
                  "id": 2908,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2907,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2913,
                      "src": "1888:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2906,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1888:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1887:9:12"
                },
                "scope": 3987,
                "src": "1838:96:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2920,
                  "nodeType": "Block",
                  "src": "1991:34:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2918,
                        "name": "_totalLock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2779,
                        "src": "2008:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2917,
                      "id": 2919,
                      "nodeType": "Return",
                      "src": "2001:17:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3a1aae35",
                "id": 2921,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalLock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2914,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1958:2:12"
                },
                "returnParameters": {
                  "id": 2917,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2916,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2921,
                      "src": "1982:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2915,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1982:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1981:9:12"
                },
                "scope": 3987,
                "src": "1940:85:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  966
                ],
                "body": {
                  "id": 2959,
                  "nodeType": "Block",
                  "src": "2331:272:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2935,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2924,
                            "src": "2368:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2936,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2926,
                            "src": "2374:2:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2937,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2928,
                            "src": "2378:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2932,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "2341:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_super$_GovernanceToken_$3987",
                              "typeString": "contract super GovernanceToken"
                            }
                          },
                          "id": 2934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_beforeTokenTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 966,
                          "src": "2341:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2341:44:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2939,
                      "nodeType": "ExpressionStatement",
                      "src": "2341:44:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2940,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2924,
                          "src": "2400:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2416:1:12",
                              "subdenomination": null,
                              "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": 2942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2408:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2941,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2408:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2408:10:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2400:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2958,
                      "nodeType": "IfStatement",
                      "src": "2396:201:12",
                      "trueBody": {
                        "id": 2957,
                        "nodeType": "Block",
                        "src": "2420:177:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2950,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2928,
                                        "src": "2512:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 2947,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 553,
                                          "src": "2494:11:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view returns (uint256)"
                                          }
                                        },
                                        "id": 2948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2494:13:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 291,
                                      "src": "2494:17:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2494:25:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2952,
                                    "name": "_cap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2777,
                                    "src": "2523:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2494:33:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332304361707065643a20636170206578636565646564",
                                  "id": 2954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2545:27:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c0532a65ade852f12d67926b1625bbc98f7eb7c650703bf531fd4e07ded2c49f",
                                    "typeString": "literal_string \"ERC20Capped: cap exceeded\""
                                  },
                                  "value": "ERC20Capped: cap exceeded"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c0532a65ade852f12d67926b1625bbc98f7eb7c650703bf531fd4e07ded2c49f",
                                    "typeString": "literal_string \"ERC20Capped: cap exceeded\""
                                  }
                                ],
                                "id": 2946,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "2469:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 2955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2469:117:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2956,
                            "nodeType": "ExpressionStatement",
                            "src": "2469:117:12"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 2922,
                  "nodeType": "StructuredDocumentation",
                  "src": "2031:167:12",
                  "text": " @dev See {ERC20-_beforeTokenTransfer}.\n Requirements:\n - minted tokens must not cause the total supply to go over the cap."
                },
                "id": 2960,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_beforeTokenTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2930,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2322:8:12"
                },
                "parameters": {
                  "id": 2929,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2924,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2960,
                      "src": "2242:12:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2923,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2242:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2926,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2960,
                      "src": "2264:10:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2925,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2264:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2928,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2960,
                      "src": "2284:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2927,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2284:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2232:72:12"
                },
                "returnParameters": {
                  "id": 2931,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2331:0:12"
                },
                "scope": 3987,
                "src": "2203:400:12",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  788
                ],
                "body": {
                  "id": 2989,
                  "nodeType": "Block",
                  "src": "3203:134:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2974,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2963,
                            "src": "3229:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2975,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2965,
                            "src": "3237:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2976,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2967,
                            "src": "3248:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2971,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "3213:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_super$_GovernanceToken_$3987",
                              "typeString": "contract super GovernanceToken"
                            }
                          },
                          "id": 2973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 788,
                          "src": "3213:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3213:42:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2978,
                      "nodeType": "ExpressionStatement",
                      "src": "3213:42:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2980,
                              "name": "_delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3390,
                              "src": "3280:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2982,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2981,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2963,
                              "src": "3291:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3280:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2983,
                              "name": "_delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3390,
                              "src": "3300:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2985,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2984,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2965,
                              "src": "3311:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3300:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2986,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2967,
                            "src": "3323:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2979,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3877,
                          "src": "3265:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3265:65:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2988,
                      "nodeType": "ExpressionStatement",
                      "src": "3265:65:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 2961,
                  "nodeType": "StructuredDocumentation",
                  "src": "2609:463:12",
                  "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                },
                "id": 2990,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2969,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3194:8:12"
                },
                "parameters": {
                  "id": 2968,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2963,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2990,
                      "src": "3105:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2962,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3105:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2965,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2990,
                      "src": "3129:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2964,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3129:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2967,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2990,
                      "src": "3156:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2966,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3156:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3095:81:12"
                },
                "returnParameters": {
                  "id": 2970,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3203:0:12"
                },
                "scope": 3987,
                "src": "3077:260:12",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3016,
                  "nodeType": "Block",
                  "src": "3504:98:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3001,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2993,
                            "src": "3520:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3002,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2995,
                            "src": "3525:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3000,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 843,
                          "src": "3514:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3514:19:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3004,
                      "nodeType": "ExpressionStatement",
                      "src": "3514:19:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3566:1:12",
                                "subdenomination": null,
                                "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": 3007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3558:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3006,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3558:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3558:10:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3010,
                              "name": "_delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3390,
                              "src": "3570:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3012,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3011,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2993,
                              "src": "3581:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3570:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3013,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2995,
                            "src": "3587:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3005,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3877,
                          "src": "3543:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3543:52:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3015,
                      "nodeType": "ExpressionStatement",
                      "src": "3543:52:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 2991,
                  "nodeType": "StructuredDocumentation",
                  "src": "3343:95:12",
                  "text": "@notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterBreeder)."
                },
                "functionSelector": "40c10f19",
                "id": 3017,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2998,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2997,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "3494:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3494:9:12"
                  }
                ],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2996,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2993,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3017,
                      "src": "3457:11:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2992,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3457:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2995,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3017,
                      "src": "3470:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2994,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3470:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3456:30:12"
                },
                "returnParameters": {
                  "id": 2999,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3504:0:12"
                },
                "scope": 3987,
                "src": "3443:159:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3059,
                  "nodeType": "Block",
                  "src": "3680:315:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3029,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3021,
                                  "src": "3728:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3027,
                                  "name": "manualMinted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "3711:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 291,
                                "src": "3711:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3711:25:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3031,
                              "name": "manualMintLimit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2785,
                              "src": "3740:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3711:44:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a2073756d206f66206d616e75616c4d696e74656420616e6420616d6f756e742067726561746572207468616e206d616e75616c4d696e744c696d6974",
                            "id": 3033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3769:68:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_56d9aad60cd6d7f4b2de094614fc7e9ae436162e2ed8154f577042f71c02a580",
                              "typeString": "literal_string \"ERC20: sum of manualMinted and amount greater than manualMintLimit\""
                            },
                            "value": "ERC20: sum of manualMinted and amount greater than manualMintLimit"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_56d9aad60cd6d7f4b2de094614fc7e9ae436162e2ed8154f577042f71c02a580",
                              "typeString": "literal_string \"ERC20: sum of manualMinted and amount greater than manualMintLimit\""
                            }
                          ],
                          "id": 3026,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3690:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3690:157:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3035,
                      "nodeType": "ExpressionStatement",
                      "src": "3690:157:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3037,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3019,
                            "src": "3863:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3038,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3021,
                            "src": "3868:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3036,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 843,
                          "src": "3857:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3857:19:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3040,
                      "nodeType": "ExpressionStatement",
                      "src": "3857:19:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3909:1:12",
                                "subdenomination": null,
                                "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": 3043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3901:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3042,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3901:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3901:10:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3046,
                              "name": "_delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3390,
                              "src": "3913:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3048,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3047,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3019,
                              "src": "3924:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3913:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3049,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3021,
                            "src": "3930:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3041,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3877,
                          "src": "3886:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3886:52:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3051,
                      "nodeType": "ExpressionStatement",
                      "src": "3886:52:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3052,
                          "name": "manualMinted",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2788,
                          "src": "3948:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3055,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3021,
                              "src": "3980:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3053,
                              "name": "manualMinted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2788,
                              "src": "3963:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "3963:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3963:25:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3948:40:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3058,
                      "nodeType": "ExpressionStatement",
                      "src": "3948:40:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e4c5ff46",
                "id": 3060,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 3024,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3023,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "3665:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3665:14:12"
                  }
                ],
                "name": "manualMint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3022,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3019,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3060,
                      "src": "3628:11:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3018,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3628:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3021,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3060,
                      "src": "3641:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3020,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3641:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3627:30:12"
                },
                "returnParameters": {
                  "id": 3025,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3680:0:12"
                },
                "scope": 3987,
                "src": "3608:387:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3076,
                  "nodeType": "Block",
                  "src": "4072:63:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3072,
                                "name": "_holder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3062,
                                "src": "4119:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3071,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 567,
                              "src": "4109:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 3073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4109:18:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3067,
                              "name": "_locks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2792,
                              "src": "4089:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3069,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3068,
                              "name": "_holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3062,
                              "src": "4096:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4089:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 291,
                          "src": "4089:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 3074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4089:39:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3066,
                      "id": 3075,
                      "nodeType": "Return",
                      "src": "4082:46:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4b0ee02a",
                "id": 3077,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalBalanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3063,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3062,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3077,
                      "src": "4025:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3061,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4025:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4024:17:12"
                },
                "returnParameters": {
                  "id": 3066,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3065,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3077,
                      "src": "4063:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3064,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4063:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4062:9:12"
                },
                "scope": 3987,
                "src": "4001:134:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3088,
                  "nodeType": "Block",
                  "src": "4204:39:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3084,
                          "name": "_locks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2792,
                          "src": "4221:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 3086,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3085,
                          "name": "_holder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3079,
                          "src": "4228:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4221:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3083,
                      "id": 3087,
                      "nodeType": "Return",
                      "src": "4214:22:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5a46d3b5",
                "id": 3089,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "lockOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3080,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3079,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3089,
                      "src": "4157:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3078,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4157:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4156:17:12"
                },
                "returnParameters": {
                  "id": 3083,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3082,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3089,
                      "src": "4195:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4195:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4194:9:12"
                },
                "scope": 3987,
                "src": "4141:102:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3100,
                  "nodeType": "Block",
                  "src": "4321:49:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3096,
                          "name": "_lastUnlockBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2796,
                          "src": "4338:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 3098,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3097,
                          "name": "_holder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3091,
                          "src": "4355:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4338:25:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3095,
                      "id": 3099,
                      "nodeType": "Return",
                      "src": "4331:32:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "89a2867c",
                "id": 3101,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "lastUnlockBlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3092,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3091,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3101,
                      "src": "4274:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3090,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4274:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4273:17:12"
                },
                "returnParameters": {
                  "id": 3095,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3094,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3101,
                      "src": "4312:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3093,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4312:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4311:9:12"
                },
                "scope": 3987,
                "src": "4249:121:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3174,
                  "nodeType": "Block",
                  "src": "4441:514:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3111,
                              "name": "_holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3103,
                              "src": "4459:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4478:1:12",
                                  "subdenomination": null,
                                  "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": 3113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4470:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3112,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4470:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4470:10:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "4459:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a206c6f636b20746f20746865207a65726f2061646472657373",
                            "id": 3117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4482:33:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d959731b1318ce2561b4f2b139926c4490bd9cc5bf7552e16de3acf221112f7a",
                              "typeString": "literal_string \"ERC20: lock to the zero address\""
                            },
                            "value": "ERC20: lock to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d959731b1318ce2561b4f2b139926c4490bd9cc5bf7552e16de3acf221112f7a",
                              "typeString": "literal_string \"ERC20: lock to the zero address\""
                            }
                          ],
                          "id": 3110,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4451:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4451:65:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3119,
                      "nodeType": "ExpressionStatement",
                      "src": "4451:65:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3121,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3105,
                              "src": "4547:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3123,
                                  "name": "_holder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3103,
                                  "src": "4568:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3122,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 567,
                                "src": "4558:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 3124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4558:18:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4547:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a206c6f636b20616d6f756e74206f7665722062616c616e6365",
                            "id": 3126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4590:33:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8311cbd717732a1444c4333ffb8c7c859704c5da162c40a846d7f92db45ec8fb",
                              "typeString": "literal_string \"ERC20: lock amount over balance\""
                            },
                            "value": "ERC20: lock amount over balance"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8311cbd717732a1444c4333ffb8c7c859704c5da162c40a846d7f92db45ec8fb",
                              "typeString": "literal_string \"ERC20: lock amount over balance\""
                            }
                          ],
                          "id": 3120,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4526:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4526:107:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3128,
                      "nodeType": "ExpressionStatement",
                      "src": "4526:107:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3130,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3103,
                            "src": "4654:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3133,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4671:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              ],
                              "id": 3132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4663:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3131,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4663:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4663:13:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3135,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3105,
                            "src": "4678:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3129,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            2990
                          ],
                          "referencedDeclaration": 2990,
                          "src": "4644:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4644:42:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3137,
                      "nodeType": "ExpressionStatement",
                      "src": "4644:42:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3138,
                            "name": "_locks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2792,
                            "src": "4697:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3140,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3139,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3103,
                            "src": "4704:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4697:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3145,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3105,
                              "src": "4735:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3141,
                                "name": "_locks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2792,
                                "src": "4715:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 3143,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3142,
                                "name": "_holder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3103,
                                "src": "4722:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4715:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "4715:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4715:28:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4697:46:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3148,
                      "nodeType": "ExpressionStatement",
                      "src": "4697:46:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3149,
                          "name": "_totalLock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2779,
                          "src": "4753:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3152,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3105,
                              "src": "4781:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3150,
                              "name": "_totalLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2779,
                              "src": "4766:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "4766:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4766:23:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4753:36:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3155,
                      "nodeType": "ExpressionStatement",
                      "src": "4753:36:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3156,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "4803:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3158,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3157,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3103,
                            "src": "4820:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4803:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3159,
                          "name": "lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2781,
                          "src": "4831:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4803:41:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3168,
                      "nodeType": "IfStatement",
                      "src": "4799:113:12",
                      "trueBody": {
                        "id": 3167,
                        "nodeType": "Block",
                        "src": "4846:66:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3161,
                                  "name": "_lastUnlockBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "4860:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3163,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3162,
                                  "name": "_holder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3103,
                                  "src": "4877:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4860:25:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 3164,
                                "name": "lockFromBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2781,
                                "src": "4888:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4860:41:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3166,
                            "nodeType": "ExpressionStatement",
                            "src": "4860:41:12"
                          }
                        ]
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3170,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3103,
                            "src": "4931:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3171,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3105,
                            "src": "4940:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3169,
                          "name": "Lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2802,
                          "src": "4926:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4926:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3173,
                      "nodeType": "EmitStatement",
                      "src": "4921:27:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "282d3fdf",
                "id": 3175,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 3108,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3107,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "4431:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4431:9:12"
                  }
                ],
                "name": "lock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3106,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3103,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3175,
                      "src": "4390:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3102,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4390:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3105,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3175,
                      "src": "4407:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3104,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4407:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4389:34:12"
                },
                "returnParameters": {
                  "id": 3109,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4441:0:12"
                },
                "scope": 3987,
                "src": "4376:579:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3230,
                  "nodeType": "Block",
                  "src": "5033:439:12",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3182,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5047:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5047:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3184,
                          "name": "lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2781,
                          "src": "5062:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5047:28:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3189,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "5120:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 3190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5120:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3191,
                            "name": "lockToBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2783,
                            "src": "5136:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5120:27:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3227,
                          "nodeType": "Block",
                          "src": "5202:264:12",
                          "statements": [
                            {
                              "assignments": [
                                3199
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3199,
                                  "mutability": "mutable",
                                  "name": "releaseBlock",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3227,
                                  "src": "5216:20:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3198,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5216:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3207,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3203,
                                      "name": "_lastUnlockBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2796,
                                      "src": "5256:16:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 3205,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3204,
                                      "name": "_holder",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3177,
                                      "src": "5273:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5256:25:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3200,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5239:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 3201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5239:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 313,
                                  "src": "5239:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5239:43:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5216:66:12"
                            },
                            {
                              "assignments": [
                                3209
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3209,
                                  "mutability": "mutable",
                                  "name": "numberLockBlock",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3227,
                                  "src": "5296:23:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3208,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5296:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3216,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3212,
                                      "name": "_lastUnlockBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2796,
                                      "src": "5354:16:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 3214,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3213,
                                      "name": "_holder",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3177,
                                      "src": "5371:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5354:25:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3210,
                                    "name": "lockToBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2783,
                                    "src": "5338:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 313,
                                  "src": "5338:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5338:42:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5296:84:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3224,
                                    "name": "numberLockBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3209,
                                    "src": "5439:15:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3221,
                                        "name": "releaseBlock",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3199,
                                        "src": "5421:12:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 3217,
                                          "name": "_locks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2792,
                                          "src": "5401:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 3219,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 3218,
                                          "name": "_holder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3177,
                                          "src": "5408:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5401:15:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3220,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "5401:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5401:33:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3223,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "5401:37:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5401:54:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3181,
                              "id": 3226,
                              "nodeType": "Return",
                              "src": "5394:61:12"
                            }
                          ]
                        },
                        "id": 3228,
                        "nodeType": "IfStatement",
                        "src": "5116:350:12",
                        "trueBody": {
                          "id": 3197,
                          "nodeType": "Block",
                          "src": "5149:47:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3193,
                                  "name": "_locks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2792,
                                  "src": "5170:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3195,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3194,
                                  "name": "_holder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3177,
                                  "src": "5177:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5170:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3181,
                              "id": 3196,
                              "nodeType": "Return",
                              "src": "5163:22:12"
                            }
                          ]
                        }
                      },
                      "id": 3229,
                      "nodeType": "IfStatement",
                      "src": "5043:423:12",
                      "trueBody": {
                        "id": 3188,
                        "nodeType": "Block",
                        "src": "5077:33:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5098:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 3181,
                            "id": 3187,
                            "nodeType": "Return",
                            "src": "5091:8:12"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "202b1760",
                "id": 3231,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "canUnlockAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3177,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3231,
                      "src": "4986:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3176,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4986:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4985:17:12"
                },
                "returnParameters": {
                  "id": 3181,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3180,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3231,
                      "src": "5024:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3179,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5024:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5023:9:12"
                },
                "scope": 3987,
                "src": "4961:511:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3308,
                  "nodeType": "Block",
                  "src": "5503:471:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3235,
                                "name": "_locks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2792,
                                "src": "5521:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 3238,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3236,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5528:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5528:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5521:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5542:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5521:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45524332303a2063616e6e6f7420756e6c6f636b",
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5545:22:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1dc47a9b45ce19f3434131e4200703ad3e4298ddd9b23450c2174b6481a99f6",
                              "typeString": "literal_string \"ERC20: cannot unlock\""
                            },
                            "value": "ERC20: cannot unlock"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a1dc47a9b45ce19f3434131e4200703ad3e4298ddd9b23450c2174b6481a99f6",
                              "typeString": "literal_string \"ERC20: cannot unlock\""
                            }
                          ],
                          "id": 3234,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5513:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5513:55:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3243,
                      "nodeType": "ExpressionStatement",
                      "src": "5513:55:12"
                    },
                    {
                      "assignments": [
                        3245
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3245,
                          "mutability": "mutable",
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3308,
                          "src": "5579:14:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3244,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5579:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3250,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3247,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5612:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5612:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 3246,
                          "name": "canUnlockAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3231,
                          "src": "5596:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 3249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5596:27:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5579:44:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3251,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3245,
                          "src": "5662:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3255,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5689:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                ],
                                "id": 3254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5681:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3253,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5681:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5681:13:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3252,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 567,
                            "src": "5671:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 3257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:24:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5662:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3269,
                      "nodeType": "IfStatement",
                      "src": "5658:97:12",
                      "trueBody": {
                        "id": 3268,
                        "nodeType": "Block",
                        "src": "5697:58:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 3259,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3245,
                                "src": "5711:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3263,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "5738:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      ],
                                      "id": 3262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5730:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3261,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5730:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5730:13:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3260,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 567,
                                  "src": "5720:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 3265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5720:24:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5711:33:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3267,
                            "nodeType": "ExpressionStatement",
                            "src": "5711:33:12"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3273,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5782:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              ],
                              "id": 3272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5774:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3271,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5774:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5774:13:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3275,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5789:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5789:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3277,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3245,
                            "src": "5801:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3270,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            2990
                          ],
                          "referencedDeclaration": 2990,
                          "src": "5764:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5764:44:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3279,
                      "nodeType": "ExpressionStatement",
                      "src": "5764:44:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3280,
                            "name": "_locks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2792,
                            "src": "5818:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3283,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3281,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5825:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5825:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5818:18:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3289,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "5862:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3284,
                                "name": "_locks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2792,
                                "src": "5839:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 3287,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3285,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5846:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5846:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5839:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 313,
                            "src": "5839:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5839:30:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5818:51:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3292,
                      "nodeType": "ExpressionStatement",
                      "src": "5818:51:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3293,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "5879:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3296,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3294,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5896:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5896:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5879:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3297,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5910:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5910:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5879:43:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3300,
                      "nodeType": "ExpressionStatement",
                      "src": "5879:43:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3301,
                          "name": "_totalLock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2779,
                          "src": "5932:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3304,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "5960:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3302,
                              "name": "_totalLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2779,
                              "src": "5945:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 313,
                            "src": "5945:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5945:22:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5932:35:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3307,
                      "nodeType": "ExpressionStatement",
                      "src": "5932:35:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a69df4b5",
                "id": 3309,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "unlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3232,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5493:2:12"
                },
                "returnParameters": {
                  "id": 3233,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5503:0:12"
                },
                "scope": 3987,
                "src": "5478:496:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3384,
                  "nodeType": "Block",
                  "src": "6104:461:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3314,
                            "name": "_locks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2792,
                            "src": "6114:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3316,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3315,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3311,
                            "src": "6121:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6114:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3321,
                                "name": "_locks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2792,
                                "src": "6144:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 3324,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3322,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6151:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6151:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6144:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3317,
                                "name": "_locks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2792,
                                "src": "6128:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 3319,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3318,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3311,
                                "src": "6135:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6128:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "6128:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6128:35:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6114:49:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3327,
                      "nodeType": "ExpressionStatement",
                      "src": "6114:49:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3328,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "6178:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3330,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3329,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3311,
                            "src": "6195:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6178:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3331,
                          "name": "lockFromBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2781,
                          "src": "6202:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6178:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3340,
                      "nodeType": "IfStatement",
                      "src": "6174:105:12",
                      "trueBody": {
                        "id": 3339,
                        "nodeType": "Block",
                        "src": "6217:62:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3333,
                                  "name": "_lastUnlockBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "6231:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3335,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3334,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3311,
                                  "src": "6248:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6231:21:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 3336,
                                "name": "lockFromBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2781,
                                "src": "6255:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6231:37:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3338,
                            "nodeType": "ExpressionStatement",
                            "src": "6231:37:12"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3341,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "6293:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3343,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3342,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3311,
                            "src": "6310:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6293:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3344,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "6317:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3347,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3345,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6334:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6334:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6317:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6293:52:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3359,
                      "nodeType": "IfStatement",
                      "src": "6289:135:12",
                      "trueBody": {
                        "id": 3358,
                        "nodeType": "Block",
                        "src": "6347:77:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3349,
                                  "name": "_lastUnlockBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "6361:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3351,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3350,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3311,
                                  "src": "6378:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6361:21:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3352,
                                  "name": "_lastUnlockBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "6385:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3355,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3353,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "6402:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6402:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6385:28:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6361:52:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3357,
                            "nodeType": "ExpressionStatement",
                            "src": "6361:52:12"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3360,
                            "name": "_locks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2792,
                            "src": "6434:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3363,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3361,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6441:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6441:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6434:18:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6455:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6434:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3366,
                      "nodeType": "ExpressionStatement",
                      "src": "6434:22:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3367,
                            "name": "_lastUnlockBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2796,
                            "src": "6466:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3370,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3368,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6483:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6483:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6466:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6497:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6466:32:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3373,
                      "nodeType": "ExpressionStatement",
                      "src": "6466:32:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3375,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6519:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6519:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3377,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3311,
                            "src": "6531:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3379,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6546:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6546:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 3378,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 567,
                              "src": "6536:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 3381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6536:21:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3374,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            2990
                          ],
                          "referencedDeclaration": 2990,
                          "src": "6509:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6509:49:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3383,
                      "nodeType": "ExpressionStatement",
                      "src": "6509:49:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a3a7e7f3",
                "id": 3385,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferAll",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3312,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3311,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3385,
                      "src": "6084:11:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6084:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6083:13:12"
                },
                "returnParameters": {
                  "id": 3313,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "6104:0:12"
                },
                "scope": 3987,
                "src": "6063:502:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "constant": false,
                "documentation": {
                  "id": 3386,
                  "nodeType": "StructuredDocumentation",
                  "src": "6969:43:12",
                  "text": "@dev A record of each accounts delegate"
                },
                "id": 3390,
                "mutability": "mutable",
                "name": "_delegates",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7017:47:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                  "typeString": "mapping(address => address)"
                },
                "typeName": {
                  "id": 3389,
                  "keyType": {
                    "id": 3387,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7025:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "7017:27:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "valueType": {
                    "id": 3388,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7036:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "canonicalName": "GovernanceToken.Checkpoint",
                "id": 3395,
                "members": [
                  {
                    "constant": false,
                    "id": 3392,
                    "mutability": "mutable",
                    "name": "fromBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 3395,
                    "src": "7175:16:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "typeName": {
                      "id": 3391,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "7175:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 3394,
                    "mutability": "mutable",
                    "name": "votes",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 3395,
                    "src": "7201:13:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 3393,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "7201:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Checkpoint",
                "nodeType": "StructDefinition",
                "scope": 3987,
                "src": "7147:74:12",
                "visibility": "public"
              },
              {
                "constant": false,
                "documentation": {
                  "id": 3396,
                  "nodeType": "StructuredDocumentation",
                  "src": "7227:68:12",
                  "text": "@notice A record of votes checkpoints for each account, by index"
                },
                "functionSelector": "f1127ed8",
                "id": 3402,
                "mutability": "mutable",
                "name": "checkpoints",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7300:68:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                  "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint))"
                },
                "typeName": {
                  "id": 3401,
                  "keyType": {
                    "id": 3397,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7308:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "7300:49:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                    "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint))"
                  },
                  "valueType": {
                    "id": 3400,
                    "keyType": {
                      "id": 3398,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "7327:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "7319:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                      "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 3399,
                      "name": "Checkpoint",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3395,
                      "src": "7337:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Checkpoint_$3395_storage_ptr",
                        "typeString": "struct GovernanceToken.Checkpoint"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "documentation": {
                  "id": 3403,
                  "nodeType": "StructuredDocumentation",
                  "src": "7375:54:12",
                  "text": "@notice The number of checkpoints for each account"
                },
                "functionSelector": "6fcfff45",
                "id": 3407,
                "mutability": "mutable",
                "name": "numCheckpoints",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7434:48:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                  "typeString": "mapping(address => uint32)"
                },
                "typeName": {
                  "id": 3406,
                  "keyType": {
                    "id": 3404,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7442:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "7434:26:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                    "typeString": "mapping(address => uint32)"
                  },
                  "valueType": {
                    "id": 3405,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7453:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "documentation": {
                  "id": 3408,
                  "nodeType": "StructuredDocumentation",
                  "src": "7489:58:12",
                  "text": "@notice The EIP-712 typehash for the contract's domain"
                },
                "functionSelector": "20606b70",
                "id": 3413,
                "mutability": "constant",
                "name": "DOMAIN_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7552:152:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3409,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "7552:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                      "id": 3411,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7625:69:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      },
                      "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      }
                    ],
                    "id": 3410,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "7602:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 3412,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "7602:102:12",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "documentation": {
                  "id": 3414,
                  "nodeType": "StructuredDocumentation",
                  "src": "7711:79:12",
                  "text": "@notice The EIP-712 typehash for the delegation struct used by the contract"
                },
                "functionSelector": "e7a324dc",
                "id": 3419,
                "mutability": "constant",
                "name": "DELEGATION_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7795:125:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3415,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "7795:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929",
                      "id": 3417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7859:60:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf",
                        "typeString": "literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""
                      },
                      "value": "Delegation(address delegatee,uint256 nonce,uint256 expiry)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf",
                        "typeString": "literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""
                      }
                    ],
                    "id": 3416,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "7849:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 3418,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "7849:71:12",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "documentation": {
                  "id": 3420,
                  "nodeType": "StructuredDocumentation",
                  "src": "7927:66:12",
                  "text": "@notice A record of states for signing / validating signatures"
                },
                "functionSelector": "7ecebe00",
                "id": 3424,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3987,
                "src": "7998:41:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 3423,
                  "keyType": {
                    "id": 3421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8006:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "7998:27:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 3422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8017:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 3425,
                  "nodeType": "StructuredDocumentation",
                  "src": "8046:71:12",
                  "text": "@notice An event thats emitted when an account changes its delegate"
                },
                "id": 3433,
                "name": "DelegateChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 3432,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3427,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "8153:25:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3426,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8153:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3429,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "fromDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "8188:28:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8188:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3431,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "toDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "8226:26:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3430,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8226:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8143:115:12"
                },
                "src": "8122:137:12"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 3434,
                  "nodeType": "StructuredDocumentation",
                  "src": "8265:81:12",
                  "text": "@notice An event thats emitted when a delegate account's vote balance changes"
                },
                "id": 3442,
                "name": "DelegateVotesChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 3441,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3436,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "delegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3442,
                      "src": "8387:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3435,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8387:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3438,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "previousBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3442,
                      "src": "8421:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3437,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8421:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3440,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "newBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3442,
                      "src": "8454:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3439,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8454:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8377:101:12"
                },
                "src": "8351:128:12"
              },
              {
                "body": {
                  "id": 3454,
                  "nodeType": "Block",
                  "src": "8691:45:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3450,
                          "name": "_delegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3390,
                          "src": "8708:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 3452,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3451,
                          "name": "delegator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3445,
                          "src": "8719:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8708:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "functionReturnParameters": 3449,
                      "id": 3453,
                      "nodeType": "Return",
                      "src": "8701:28:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 3443,
                  "nodeType": "StructuredDocumentation",
                  "src": "8485:131:12",
                  "text": " @notice Delegate votes from `msg.sender` to `delegatee`\n @param delegator The address to get delegatee for"
                },
                "functionSelector": "587cde1e",
                "id": 3455,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "delegates",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3446,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3445,
                      "mutability": "mutable",
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3455,
                      "src": "8640:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3444,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8640:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8639:19:12"
                },
                "returnParameters": {
                  "id": 3449,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3448,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3455,
                      "src": "8682:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3447,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8682:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8681:9:12"
                },
                "scope": 3987,
                "src": "8621:115:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3467,
                  "nodeType": "Block",
                  "src": "8924:56:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3462,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8951:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8951:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3464,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3458,
                            "src": "8963:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3461,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3770,
                          "src": "8941:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 3465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8941:32:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 3460,
                      "id": 3466,
                      "nodeType": "Return",
                      "src": "8934:39:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 3456,
                  "nodeType": "StructuredDocumentation",
                  "src": "8742:131:12",
                  "text": " @notice Delegate votes from `msg.sender` to `delegatee`\n @param delegatee The address to delegate votes to"
                },
                "functionSelector": "5c19a95c",
                "id": 3468,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "delegate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3459,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3458,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3468,
                      "src": "8896:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3457,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8896:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8895:19:12"
                },
                "returnParameters": {
                  "id": 3460,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8924:0:12"
                },
                "scope": 3987,
                "src": "8878:102:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3570,
                  "nodeType": "Block",
                  "src": "9570:1005:12",
                  "statements": [
                    {
                      "assignments": [
                        3485
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3485,
                          "mutability": "mutable",
                          "name": "domainSeparator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3570,
                          "src": "9580:23:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3484,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9580:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3505,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3489,
                                "name": "DOMAIN_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3413,
                                "src": "9677:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3493,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 525,
                                          "src": "9730:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                            "typeString": "function () view returns (string memory)"
                                          }
                                        },
                                        "id": 3494,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9730:6:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 3492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9724:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 3491,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9724:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9724:13:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3490,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "9714:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 3496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9714:24:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3497,
                                  "name": "getChainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3986,
                                  "src": "9760:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 3498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9760:12:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3501,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "9802:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                      "typeString": "contract GovernanceToken"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                      "typeString": "contract GovernanceToken"
                                    }
                                  ],
                                  "id": 3500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9794:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3499,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9794:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9794:13:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3487,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "9645:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9645:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9645:180:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3486,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "9618:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9618:221:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9580:259:12"
                    },
                    {
                      "assignments": [
                        3507
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3507,
                          "mutability": "mutable",
                          "name": "structHash",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3570,
                          "src": "9850:18:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3506,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9850:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3517,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3511,
                                "name": "DELEGATION_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3419,
                                "src": "9921:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3512,
                                "name": "delegatee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3471,
                                "src": "9942:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3513,
                                "name": "nonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3473,
                                "src": "9953:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3514,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3475,
                                "src": "9960:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3509,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "9910:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9910:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9910:57:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3508,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "9883:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9883:98:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9850:131:12"
                    },
                    {
                      "assignments": [
                        3519
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3519,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3570,
                          "src": "9992:14:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3518,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9992:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3528,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 3523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10065:10:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 3524,
                                "name": "domainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3485,
                                "src": "10077:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3525,
                                "name": "structHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3507,
                                "src": "10094:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3521,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10048:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10048:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10048:57:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3520,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "10021:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10021:98:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9992:127:12"
                    },
                    {
                      "assignments": [
                        3530
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3530,
                          "mutability": "mutable",
                          "name": "signatory",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3570,
                          "src": "10130:17:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3529,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10130:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3537,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3532,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3519,
                            "src": "10160:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3533,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3477,
                            "src": "10168:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3534,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3479,
                            "src": "10171:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3535,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3481,
                            "src": "10174:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3531,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "10150:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 3536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10150:26:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10130:46:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3539,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3530,
                              "src": "10207:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10228:1:12",
                                  "subdenomination": null,
                                  "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": 3541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10220:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3540,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10220:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10220:10:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "10207:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265",
                            "id": 3545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10244:51:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b3698c04d83fec998397d5c7310699366923e5912ab74e727394ba33daa2e6b1",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: invalid signature\""
                            },
                            "value": "GovernanceToken::delegateBySig: invalid signature"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b3698c04d83fec998397d5c7310699366923e5912ab74e727394ba33daa2e6b1",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: invalid signature\""
                            }
                          ],
                          "id": 3538,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10186:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10186:119:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3547,
                      "nodeType": "ExpressionStatement",
                      "src": "10186:119:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3549,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3473,
                              "src": "10336:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "10345:19:12",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3550,
                                  "name": "nonces",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3424,
                                  "src": "10345:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3552,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3551,
                                  "name": "signatory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3530,
                                  "src": "10352:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10345:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10336:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365",
                            "id": 3555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10378:47:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_02a50c64d66c2e1a83103aa9f9eeb6858459ef900a1ef962728bb21080ba2584",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: invalid nonce\""
                            },
                            "value": "GovernanceToken::delegateBySig: invalid nonce"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_02a50c64d66c2e1a83103aa9f9eeb6858459ef900a1ef962728bb21080ba2584",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: invalid nonce\""
                            }
                          ],
                          "id": 3548,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10315:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10315:120:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3557,
                      "nodeType": "ExpressionStatement",
                      "src": "10315:120:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3559,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -17,
                              "src": "10453:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3560,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3475,
                              "src": "10460:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10453:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564",
                            "id": 3562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10468:51:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_714b27a2c2363d7e004b036beeff92e9bfb874cebacdb4ca626955086a64a394",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: signature expired\""
                            },
                            "value": "GovernanceToken::delegateBySig: signature expired"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_714b27a2c2363d7e004b036beeff92e9bfb874cebacdb4ca626955086a64a394",
                              "typeString": "literal_string \"GovernanceToken::delegateBySig: signature expired\""
                            }
                          ],
                          "id": 3558,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10445:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10445:75:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3564,
                      "nodeType": "ExpressionStatement",
                      "src": "10445:75:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3566,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3530,
                            "src": "10547:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3567,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3471,
                            "src": "10558:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3565,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3770,
                          "src": "10537:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 3568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10537:31:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 3483,
                      "id": 3569,
                      "nodeType": "Return",
                      "src": "10530:38:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 3469,
                  "nodeType": "StructuredDocumentation",
                  "src": "8986:412:12",
                  "text": " @notice Delegates votes from signatory to `delegatee`\n @param delegatee The address to delegate votes to\n @param nonce The contract state required to match the signature\n @param expiry The time at which to expire the signature\n @param v The recovery byte of the signature\n @param r Half of the ECDSA signature pair\n @param s Half of the ECDSA signature pair"
                },
                "functionSelector": "c3cda520",
                "id": 3571,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "delegateBySig",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3482,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3471,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9435:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3470,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9435:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3473,
                      "mutability": "mutable",
                      "name": "nonce",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9462:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3472,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9462:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3475,
                      "mutability": "mutable",
                      "name": "expiry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9485:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3474,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9485:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3477,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9509:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3476,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9509:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3479,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9526:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3478,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9526:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3481,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3571,
                      "src": "9545:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3480,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9545:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9425:135:12"
                },
                "returnParameters": {
                  "id": 3483,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9570:0:12"
                },
                "scope": 3987,
                "src": "9403:1172:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3599,
                  "nodeType": "Block",
                  "src": "10843:158:12",
                  "statements": [
                    {
                      "assignments": [
                        3580
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3580,
                          "mutability": "mutable",
                          "name": "nCheckpoints",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3599,
                          "src": "10853:19:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3579,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10853:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3584,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3581,
                          "name": "numCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3407,
                          "src": "10875:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                            "typeString": "mapping(address => uint32)"
                          }
                        },
                        "id": 3583,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3582,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3574,
                          "src": "10890:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10875:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10853:45:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3585,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3580,
                            "src": "10927:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10942:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10927:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10993:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 3597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10927:67:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3588,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3402,
                                "src": "10946:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                }
                              },
                              "id": 3590,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3589,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3574,
                                "src": "10958:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10946:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                              }
                            },
                            "id": 3594,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3591,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3580,
                                "src": "10967:12:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10982:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "10967:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10946:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                              "typeString": "struct GovernanceToken.Checkpoint storage ref"
                            }
                          },
                          "id": 3595,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3394,
                          "src": "10946:44:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3578,
                      "id": 3598,
                      "nodeType": "Return",
                      "src": "10908:86:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 3572,
                  "nodeType": "StructuredDocumentation",
                  "src": "10581:183:12",
                  "text": " @notice Gets the current votes balance for `account`\n @param account The address to get votes balance\n @return The number of current votes for `account`"
                },
                "functionSelector": "b4b5ea57",
                "id": 3600,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getCurrentVotes",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3574,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3600,
                      "src": "10794:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3573,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10794:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10793:17:12"
                },
                "returnParameters": {
                  "id": 3578,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3577,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3600,
                      "src": "10834:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3576,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10834:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10833:9:12"
                },
                "scope": 3987,
                "src": "10769:232:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3731,
                  "nodeType": "Block",
                  "src": "11544:1144:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3611,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3605,
                              "src": "11575:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3612,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "11589:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11589:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11575:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564",
                            "id": 3615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11615:52:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01c0451ecc8d82b5baf81446b5d2a8d3f1e54d9f3d16324c3eecddb545d4466c",
                              "typeString": "literal_string \"GovernanceToken::getPriorVotes: not yet determined\""
                            },
                            "value": "GovernanceToken::getPriorVotes: not yet determined"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_01c0451ecc8d82b5baf81446b5d2a8d3f1e54d9f3d16324c3eecddb545d4466c",
                              "typeString": "literal_string \"GovernanceToken::getPriorVotes: not yet determined\""
                            }
                          ],
                          "id": 3610,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11554:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11554:123:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3617,
                      "nodeType": "ExpressionStatement",
                      "src": "11554:123:12"
                    },
                    {
                      "assignments": [
                        3619
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3619,
                          "mutability": "mutable",
                          "name": "nCheckpoints",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3731,
                          "src": "11688:19:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3618,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11688:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3623,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3620,
                          "name": "numCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3407,
                          "src": "11710:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                            "typeString": "mapping(address => uint32)"
                          }
                        },
                        "id": 3622,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3621,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3603,
                          "src": "11725:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11710:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11688:45:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3624,
                          "name": "nCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3619,
                          "src": "11747:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11763:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "11747:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3630,
                      "nodeType": "IfStatement",
                      "src": "11743:56:12",
                      "trueBody": {
                        "id": 3629,
                        "nodeType": "Block",
                        "src": "11766:33:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11787:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 3609,
                            "id": 3628,
                            "nodeType": "Return",
                            "src": "11780:8:12"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3631,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3402,
                                "src": "11856:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                }
                              },
                              "id": 3633,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3632,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3603,
                                "src": "11868:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11856:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                              }
                            },
                            "id": 3637,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3634,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3619,
                                "src": "11877:12:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11892:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11877:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11856:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                              "typeString": "struct GovernanceToken.Checkpoint storage ref"
                            }
                          },
                          "id": 3638,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fromBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3392,
                          "src": "11856:48:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3639,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3605,
                          "src": "11908:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11856:63:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3651,
                      "nodeType": "IfStatement",
                      "src": "11852:145:12",
                      "trueBody": {
                        "id": 3650,
                        "nodeType": "Block",
                        "src": "11921:76:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3641,
                                    "name": "checkpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3402,
                                    "src": "11942:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 3643,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3642,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3603,
                                    "src": "11954:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11942:20:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                    "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                  }
                                },
                                "id": 3647,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 3646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3644,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3619,
                                    "src": "11963:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11978:1:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "11963:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11942:38:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                  "typeString": "struct GovernanceToken.Checkpoint storage ref"
                                }
                              },
                              "id": 3648,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3394,
                              "src": "11942:44:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3609,
                            "id": 3649,
                            "nodeType": "Return",
                            "src": "11935:51:12"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3652,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3402,
                                "src": "12055:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                }
                              },
                              "id": 3654,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3653,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3603,
                                "src": "12067:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12055:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                              }
                            },
                            "id": 3656,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12076:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12055:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                              "typeString": "struct GovernanceToken.Checkpoint storage ref"
                            }
                          },
                          "id": 3657,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fromBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3392,
                          "src": "12055:33:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3658,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3605,
                          "src": "12091:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12055:47:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3663,
                      "nodeType": "IfStatement",
                      "src": "12051:86:12",
                      "trueBody": {
                        "id": 3662,
                        "nodeType": "Block",
                        "src": "12104:33:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12125:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 3609,
                            "id": 3661,
                            "nodeType": "Return",
                            "src": "12118:8:12"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        3665
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3665,
                          "mutability": "mutable",
                          "name": "lower",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3731,
                          "src": "12147:12:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3664,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "12147:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3667,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12162:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12147:16:12"
                    },
                    {
                      "assignments": [
                        3669
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3669,
                          "mutability": "mutable",
                          "name": "upper",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3731,
                          "src": "12173:12:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3668,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "12173:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3673,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3670,
                          "name": "nCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3619,
                          "src": "12188:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12203:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "12188:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12173:31:12"
                    },
                    {
                      "body": {
                        "id": 3722,
                        "nodeType": "Block",
                        "src": "12236:396:12",
                        "statements": [
                          {
                            "assignments": [
                              3678
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3678,
                                "mutability": "mutable",
                                "name": "center",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3722,
                                "src": "12250:13:12",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "typeName": {
                                  "id": 3677,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12250:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3687,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3679,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3669,
                                "src": "12266:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3682,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3680,
                                        "name": "upper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3669,
                                        "src": "12275:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3681,
                                        "name": "lower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3665,
                                        "src": "12283:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12275:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "id": 3683,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12274:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 3684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12292:1:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "12274:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "12266:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12250:43:12"
                          },
                          {
                            "assignments": [
                              3689
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3689,
                                "mutability": "mutable",
                                "name": "cp",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3722,
                                "src": "12334:20:12",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$3395_memory_ptr",
                                  "typeString": "struct GovernanceToken.Checkpoint"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3688,
                                  "name": "Checkpoint",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 3395,
                                  "src": "12334:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$3395_storage_ptr",
                                    "typeString": "struct GovernanceToken.Checkpoint"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3695,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3690,
                                  "name": "checkpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3402,
                                  "src": "12357:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                  }
                                },
                                "id": 3692,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3691,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3603,
                                  "src": "12369:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12357:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                  "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                }
                              },
                              "id": 3694,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3693,
                                "name": "center",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3678,
                                "src": "12378:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12357:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                "typeString": "struct GovernanceToken.Checkpoint storage ref"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12334:51:12"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3696,
                                  "name": "cp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3689,
                                  "src": "12403:2:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$3395_memory_ptr",
                                    "typeString": "struct GovernanceToken.Checkpoint memory"
                                  }
                                },
                                "id": 3697,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "fromBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3392,
                                "src": "12403:12:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3698,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3605,
                                "src": "12419:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12403:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3704,
                                    "name": "cp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3689,
                                    "src": "12490:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$3395_memory_ptr",
                                      "typeString": "struct GovernanceToken.Checkpoint memory"
                                    }
                                  },
                                  "id": 3705,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3392,
                                  "src": "12490:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3706,
                                  "name": "blockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3605,
                                  "src": "12505:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12490:26:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3719,
                                "nodeType": "Block",
                                "src": "12571:51:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3717,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3713,
                                        "name": "upper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3669,
                                        "src": "12589:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        "id": 3716,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3714,
                                          "name": "center",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3678,
                                          "src": "12597:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3715,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12606:1:12",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "12597:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12589:18:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 3718,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12589:18:12"
                                  }
                                ]
                              },
                              "id": 3720,
                              "nodeType": "IfStatement",
                              "src": "12486:136:12",
                              "trueBody": {
                                "id": 3712,
                                "nodeType": "Block",
                                "src": "12518:47:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3708,
                                        "name": "lower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3665,
                                        "src": "12536:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 3709,
                                        "name": "center",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3678,
                                        "src": "12544:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12536:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 3711,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12536:14:12"
                                  }
                                ]
                              }
                            },
                            "id": 3721,
                            "nodeType": "IfStatement",
                            "src": "12399:223:12",
                            "trueBody": {
                              "id": 3703,
                              "nodeType": "Block",
                              "src": "12432:48:12",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3700,
                                      "name": "cp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3689,
                                      "src": "12457:2:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$3395_memory_ptr",
                                        "typeString": "struct GovernanceToken.Checkpoint memory"
                                      }
                                    },
                                    "id": 3701,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3394,
                                    "src": "12457:8:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 3609,
                                  "id": 3702,
                                  "nodeType": "Return",
                                  "src": "12450:15:12"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3674,
                          "name": "upper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3669,
                          "src": "12221:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3675,
                          "name": "lower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3665,
                          "src": "12229:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "12221:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3723,
                      "nodeType": "WhileStatement",
                      "src": "12214:418:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3724,
                              "name": "checkpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3402,
                              "src": "12648:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                              }
                            },
                            "id": 3726,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3725,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3603,
                              "src": "12660:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12648:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                              "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                            }
                          },
                          "id": 3728,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3727,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3665,
                            "src": "12669:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12648:27:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                            "typeString": "struct GovernanceToken.Checkpoint storage ref"
                          }
                        },
                        "id": 3729,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3394,
                        "src": "12648:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3609,
                      "id": 3730,
                      "nodeType": "Return",
                      "src": "12641:40:12"
                    }
                  ]
                },
                "documentation": {
                  "id": 3601,
                  "nodeType": "StructuredDocumentation",
                  "src": "11007:411:12",
                  "text": " @notice Determine the prior number of votes for an account as of a block number\n @dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n @param account The address of the account to check\n @param blockNumber The block number to get the vote balance at\n @return The number of votes the account had as of the given block"
                },
                "functionSelector": "782d6fe1",
                "id": 3732,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getPriorVotes",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3606,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3603,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3732,
                      "src": "11446:15:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3602,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11446:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3605,
                      "mutability": "mutable",
                      "name": "blockNumber",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3732,
                      "src": "11463:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3604,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11463:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11445:38:12"
                },
                "returnParameters": {
                  "id": 3609,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3608,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3732,
                      "src": "11531:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11531:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11530:9:12"
                },
                "scope": 3987,
                "src": "11423:1265:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3769,
                  "nodeType": "Block",
                  "src": "12760:305:12",
                  "statements": [
                    {
                      "assignments": [
                        3740
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3740,
                          "mutability": "mutable",
                          "name": "currentDelegate",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3769,
                          "src": "12770:23:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3739,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12770:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3744,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3741,
                          "name": "_delegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3390,
                          "src": "12796:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 3743,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3742,
                          "name": "delegator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3734,
                          "src": "12807:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12796:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12770:47:12"
                    },
                    {
                      "assignments": [
                        3746
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3746,
                          "mutability": "mutable",
                          "name": "delegatorBalance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3769,
                          "src": "12827:24:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3745,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "12827:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3750,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3748,
                            "name": "delegator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3734,
                            "src": "12864:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3747,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 567,
                          "src": "12854:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 3749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12854:20:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12827:47:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3751,
                            "name": "_delegates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3390,
                            "src": "12884:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 3753,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3752,
                            "name": "delegator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3734,
                            "src": "12895:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "12884:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3754,
                          "name": "delegatee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3736,
                          "src": "12908:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "12884:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3756,
                      "nodeType": "ExpressionStatement",
                      "src": "12884:33:12"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3758,
                            "name": "delegator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3734,
                            "src": "12949:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3759,
                            "name": "currentDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3740,
                            "src": "12960:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3760,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3736,
                            "src": "12977:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3757,
                          "name": "DelegateChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "12933:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address,address)"
                          }
                        },
                        "id": 3761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12933:54:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3762,
                      "nodeType": "EmitStatement",
                      "src": "12928:59:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3764,
                            "name": "currentDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3740,
                            "src": "13013:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3765,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3736,
                            "src": "13030:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3766,
                            "name": "delegatorBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3746,
                            "src": "13041:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3763,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3877,
                          "src": "12998:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12998:60:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3768,
                      "nodeType": "ExpressionStatement",
                      "src": "12998:60:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 3770,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_delegate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3737,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3734,
                      "mutability": "mutable",
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3770,
                      "src": "12713:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3733,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12713:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3736,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3770,
                      "src": "12732:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3735,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12732:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12712:38:12"
                },
                "returnParameters": {
                  "id": 3738,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12760:0:12"
                },
                "scope": 3987,
                "src": "12694:371:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3876,
                  "nodeType": "Block",
                  "src": "13182:984:12",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3779,
                            "name": "srcRep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3772,
                            "src": "13196:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3780,
                            "name": "dstRep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3774,
                            "src": "13206:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13196:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3782,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3776,
                            "src": "13216:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13225:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13216:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13196:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3875,
                      "nodeType": "IfStatement",
                      "src": "13192:968:12",
                      "trueBody": {
                        "id": 3874,
                        "nodeType": "Block",
                        "src": "13228:932:12",
                        "statements": [
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3786,
                                "name": "srcRep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3772,
                                "src": "13246:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3789,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13264:1:12",
                                    "subdenomination": null,
                                    "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": 3788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13256:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3787,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13256:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13256:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13246:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3829,
                            "nodeType": "IfStatement",
                            "src": "13242:447:12",
                            "trueBody": {
                              "id": 3828,
                              "nodeType": "Block",
                              "src": "13268:421:12",
                              "statements": [
                                {
                                  "assignments": [
                                    3793
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3793,
                                      "mutability": "mutable",
                                      "name": "srcRepNum",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3828,
                                      "src": "13333:16:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "typeName": {
                                        "id": 3792,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13333:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3797,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3794,
                                      "name": "numCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3407,
                                      "src": "13352:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                        "typeString": "mapping(address => uint32)"
                                      }
                                    },
                                    "id": 3796,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3795,
                                      "name": "srcRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3772,
                                      "src": "13367:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13352:22:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13333:41:12"
                                },
                                {
                                  "assignments": [
                                    3799
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3799,
                                      "mutability": "mutable",
                                      "name": "srcRepOld",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3828,
                                      "src": "13392:17:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3798,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13392:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3813,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3802,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3800,
                                        "name": "srcRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3793,
                                        "src": "13432:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3801,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13444:1:12",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "13432:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3811,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13539:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "id": 3812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "13432:108:12",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3803,
                                            "name": "checkpoints",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3402,
                                            "src": "13472:11:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                              "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                            }
                                          },
                                          "id": 3805,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3804,
                                            "name": "srcRep",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3772,
                                            "src": "13484:6:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "13472:19:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                            "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                          }
                                        },
                                        "id": 3809,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 3808,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3806,
                                            "name": "srcRepNum",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3793,
                                            "src": "13492:9:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 3807,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13504:1:12",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "13492:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13472:34:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                          "typeString": "struct GovernanceToken.Checkpoint storage ref"
                                        }
                                      },
                                      "id": 3810,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "votes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3394,
                                      "src": "13472:40:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13392:148:12"
                                },
                                {
                                  "assignments": [
                                    3815
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3815,
                                      "mutability": "mutable",
                                      "name": "srcRepNew",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3828,
                                      "src": "13558:17:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3814,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13558:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3820,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3818,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3776,
                                        "src": "13592:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3816,
                                        "name": "srcRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3799,
                                        "src": "13578:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 313,
                                      "src": "13578:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13578:21:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13558:41:12"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3822,
                                        "name": "srcRep",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3772,
                                        "src": "13634:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3823,
                                        "name": "srcRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3793,
                                        "src": "13642:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3824,
                                        "name": "srcRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3799,
                                        "src": "13653:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3825,
                                        "name": "srcRepNew",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3815,
                                        "src": "13664:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3821,
                                      "name": "_writeCheckpoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3950,
                                      "src": "13617:16:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint32,uint256,uint256)"
                                      }
                                    },
                                    "id": 3826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13617:57:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3827,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13617:57:12"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3830,
                                "name": "dstRep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3774,
                                "src": "13707:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3833,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13725:1:12",
                                    "subdenomination": null,
                                    "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": 3832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13717:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3831,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13717:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13717:10:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13707:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3873,
                            "nodeType": "IfStatement",
                            "src": "13703:447:12",
                            "trueBody": {
                              "id": 3872,
                              "nodeType": "Block",
                              "src": "13729:421:12",
                              "statements": [
                                {
                                  "assignments": [
                                    3837
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3837,
                                      "mutability": "mutable",
                                      "name": "dstRepNum",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3872,
                                      "src": "13794:16:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "typeName": {
                                        "id": 3836,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13794:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3841,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3838,
                                      "name": "numCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3407,
                                      "src": "13813:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                        "typeString": "mapping(address => uint32)"
                                      }
                                    },
                                    "id": 3840,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3839,
                                      "name": "dstRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3774,
                                      "src": "13828:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13813:22:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13794:41:12"
                                },
                                {
                                  "assignments": [
                                    3843
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3843,
                                      "mutability": "mutable",
                                      "name": "dstRepOld",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3872,
                                      "src": "13853:17:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3842,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13853:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3857,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3846,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3844,
                                        "name": "dstRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3837,
                                        "src": "13893:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3845,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13905:1:12",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "13893:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3855,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14000:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "id": 3856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "13893:108:12",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3847,
                                            "name": "checkpoints",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3402,
                                            "src": "13933:11:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                              "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                            }
                                          },
                                          "id": 3849,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3848,
                                            "name": "dstRep",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3774,
                                            "src": "13945:6:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "13933:19:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                            "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                          }
                                        },
                                        "id": 3853,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 3852,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3850,
                                            "name": "dstRepNum",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3837,
                                            "src": "13953:9:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 3851,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13965:1:12",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "13953:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13933:34:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                          "typeString": "struct GovernanceToken.Checkpoint storage ref"
                                        }
                                      },
                                      "id": 3854,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "votes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3394,
                                      "src": "13933:40:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13853:148:12"
                                },
                                {
                                  "assignments": [
                                    3859
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3859,
                                      "mutability": "mutable",
                                      "name": "dstRepNew",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3872,
                                      "src": "14019:17:12",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3858,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14019:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3864,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3862,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3776,
                                        "src": "14053:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3860,
                                        "name": "dstRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3843,
                                        "src": "14039:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3861,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 291,
                                      "src": "14039:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14039:21:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14019:41:12"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3866,
                                        "name": "dstRep",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3774,
                                        "src": "14095:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3867,
                                        "name": "dstRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3837,
                                        "src": "14103:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3868,
                                        "name": "dstRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3843,
                                        "src": "14114:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3869,
                                        "name": "dstRepNew",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3859,
                                        "src": "14125:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3865,
                                      "name": "_writeCheckpoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3950,
                                      "src": "14078:16:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint32,uint256,uint256)"
                                      }
                                    },
                                    "id": 3870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14078:57:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3871,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14078:57:12"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 3877,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_moveDelegates",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3777,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3772,
                      "mutability": "mutable",
                      "name": "srcRep",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3877,
                      "src": "13104:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3771,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13104:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3774,
                      "mutability": "mutable",
                      "name": "dstRep",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3877,
                      "src": "13128:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3773,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13128:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3776,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3877,
                      "src": "13152:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3775,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13152:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13094:78:12"
                },
                "returnParameters": {
                  "id": 3778,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13182:0:12"
                },
                "scope": 3987,
                "src": "13071:1095:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3949,
                  "nodeType": "Block",
                  "src": "14321:674:12",
                  "statements": [
                    {
                      "assignments": [
                        3889
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3889,
                          "mutability": "mutable",
                          "name": "blockNumber",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3949,
                          "src": "14331:18:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3888,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "14331:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3895,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3891,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "14388:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 3892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14388:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                            "id": 3893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14418:65:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_18f27b07adadc99a14ec26e49ff1d99522c206b97e28567aa600c3397e89c094",
                              "typeString": "literal_string \"GovernanceToken::_writeCheckpoint: block number exceeds 32 bits\""
                            },
                            "value": "GovernanceToken::_writeCheckpoint: block number exceeds 32 bits"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_18f27b07adadc99a14ec26e49ff1d99522c206b97e28567aa600c3397e89c094",
                              "typeString": "literal_string \"GovernanceToken::_writeCheckpoint: block number exceeds 32 bits\""
                            }
                          ],
                          "id": 3890,
                          "name": "safe32",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3974,
                          "src": "14364:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                            "typeString": "function (uint256,string memory) pure returns (uint32)"
                          }
                        },
                        "id": 3894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14364:133:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14331:166:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3896,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3881,
                            "src": "14525:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14540:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14525:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3899,
                                  "name": "checkpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3402,
                                  "src": "14557:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                  }
                                },
                                "id": 3901,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3900,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3879,
                                  "src": "14569:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14557:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                  "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                }
                              },
                              "id": 3905,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3902,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3881,
                                  "src": "14580:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14595:1:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14580:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14557:40:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                "typeString": "struct GovernanceToken.Checkpoint storage ref"
                              }
                            },
                            "id": 3906,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3392,
                            "src": "14557:50:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3907,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3889,
                            "src": "14611:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14557:65:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14525:97:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3941,
                        "nodeType": "Block",
                        "src": "14721:201:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3922,
                                    "name": "checkpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3402,
                                    "src": "14735:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 3925,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3923,
                                    "name": "delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3879,
                                    "src": "14747:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14735:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                    "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                  }
                                },
                                "id": 3926,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3924,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3881,
                                  "src": "14758:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "14735:36:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                  "typeString": "struct GovernanceToken.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3928,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3889,
                                    "src": "14802:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3929,
                                    "name": "newVotes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3885,
                                    "src": "14831:8:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3927,
                                  "name": "Checkpoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3395,
                                  "src": "14774:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_Checkpoint_$3395_storage_ptr_$",
                                    "typeString": "type(struct GovernanceToken.Checkpoint storage pointer)"
                                  }
                                },
                                "id": 3930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14774:79:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$3395_memory_ptr",
                                  "typeString": "struct GovernanceToken.Checkpoint memory"
                                }
                              },
                              "src": "14735:118:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                "typeString": "struct GovernanceToken.Checkpoint storage ref"
                              }
                            },
                            "id": 3932,
                            "nodeType": "ExpressionStatement",
                            "src": "14735:118:12"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3933,
                                  "name": "numCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3407,
                                  "src": "14867:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                    "typeString": "mapping(address => uint32)"
                                  }
                                },
                                "id": 3935,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3934,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3879,
                                  "src": "14882:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "14867:25:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3936,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3881,
                                  "src": "14895:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14910:1:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14895:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "14867:44:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 3940,
                            "nodeType": "ExpressionStatement",
                            "src": "14867:44:12"
                          }
                        ]
                      },
                      "id": 3942,
                      "nodeType": "IfStatement",
                      "src": "14508:414:12",
                      "trueBody": {
                        "id": 3921,
                        "nodeType": "Block",
                        "src": "14633:82:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3910,
                                      "name": "checkpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3402,
                                      "src": "14647:11:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$_$",
                                        "typeString": "mapping(address => mapping(uint32 => struct GovernanceToken.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 3915,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3911,
                                      "name": "delegatee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3879,
                                      "src": "14659:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14647:22:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$3395_storage_$",
                                      "typeString": "mapping(uint32 => struct GovernanceToken.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 3916,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 3914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3912,
                                      "name": "nCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3881,
                                      "src": "14670:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3913,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14685:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "14670:16:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14647:40:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$3395_storage",
                                    "typeString": "struct GovernanceToken.Checkpoint storage ref"
                                  }
                                },
                                "id": 3917,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3394,
                                "src": "14647:46:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 3918,
                                "name": "newVotes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3885,
                                "src": "14696:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14647:57:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3920,
                            "nodeType": "ExpressionStatement",
                            "src": "14647:57:12"
                          }
                        ]
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3944,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3879,
                            "src": "14958:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3945,
                            "name": "oldVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3883,
                            "src": "14969:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3946,
                            "name": "newVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3885,
                            "src": "14979:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3943,
                          "name": "DelegateVotesChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3442,
                          "src": "14937:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 3947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14937:51:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3948,
                      "nodeType": "EmitStatement",
                      "src": "14932:56:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 3950,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_writeCheckpoint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3886,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3879,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3950,
                      "src": "14207:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3878,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14207:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3881,
                      "mutability": "mutable",
                      "name": "nCheckpoints",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3950,
                      "src": "14234:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3880,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14234:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3883,
                      "mutability": "mutable",
                      "name": "oldVotes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3950,
                      "src": "14263:16:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3882,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14263:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3885,
                      "mutability": "mutable",
                      "name": "newVotes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3950,
                      "src": "14289:16:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3884,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14289:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14197:114:12"
                },
                "returnParameters": {
                  "id": 3887,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14321:0:12"
                },
                "scope": 3987,
                "src": "14172:823:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3973,
                  "nodeType": "Block",
                  "src": "15115:75:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3960,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3952,
                              "src": "15133:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 3963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 3961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15137:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 3962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15140:2:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "15137:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "15133:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3965,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3954,
                            "src": "15144:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3959,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15125:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15125:32:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3967,
                      "nodeType": "ExpressionStatement",
                      "src": "15125:32:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3970,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3952,
                            "src": "15181:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15174:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 3968,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "15174:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 3971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15174:9:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "functionReturnParameters": 3958,
                      "id": 3972,
                      "nodeType": "Return",
                      "src": "15167:16:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 3974,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safe32",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3955,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3952,
                      "mutability": "mutable",
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3974,
                      "src": "15017:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3951,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15017:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3954,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3974,
                      "src": "15028:26:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3953,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "15028:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15016:39:12"
                },
                "returnParameters": {
                  "id": 3958,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3957,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3974,
                      "src": "15103:6:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3956,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15103:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15102:8:12"
                },
                "scope": 3987,
                "src": "15001:189:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3985,
                  "nodeType": "Block",
                  "src": "15250:118:12",
                  "statements": [
                    {
                      "assignments": [
                        3980
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3980,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3985,
                          "src": "15260:15:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3979,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15260:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3981,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15260:15:12"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "15294:44:12",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "15308:20:12",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "15319:7:12"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15319:9:12"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "15308:7:12"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 3980,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "15308:7:12",
                          "valueSize": 1
                        }
                      ],
                      "id": 3982,
                      "nodeType": "InlineAssembly",
                      "src": "15285:53:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3983,
                        "name": "chainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "15354:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3978,
                      "id": 3984,
                      "nodeType": "Return",
                      "src": "15347:14:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 3986,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getChainId",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3975,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "15215:2:12"
                },
                "returnParameters": {
                  "id": 3978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3977,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3986,
                      "src": "15241:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3976,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15241:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15240:9:12"
                },
                "scope": 3987,
                "src": "15196:172:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 3988,
            "src": "220:15150:12"
          }
        ],
        "src": "33:15338:12"
      }
    },
    "contracts/GovernanceVote.sol": {
      "id": 13,
      "AST": {
        "absolutePath": "contracts/GovernanceVote.sol",
        "exportedSymbols": {
          "GovernanceVote": [
            4504
          ]
        },
        "id": 4505,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 3989,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:13"
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 3990,
            "nodeType": "ImportDirective",
            "scope": 4505,
            "sourceUnit": 465,
            "src": "58:51:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 3991,
            "nodeType": "ImportDirective",
            "scope": 4505,
            "sourceUnit": 1046,
            "src": "110:56:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
            "file": "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
            "id": 3992,
            "nodeType": "ImportDirective",
            "scope": 4505,
            "sourceUnit": 11978,
            "src": "167:65:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IGovernanceToken.sol",
            "file": "./interfaces/IGovernanceToken.sol",
            "id": 3993,
            "nodeType": "ImportDirective",
            "scope": 4505,
            "sourceUnit": 9032,
            "src": "233:43:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMasterBreeder.sol",
            "file": "./interfaces/IMasterBreeder.sol",
            "id": 3994,
            "nodeType": "ImportDirective",
            "scope": 4505,
            "sourceUnit": 9370,
            "src": "277:41:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 4504,
            "linearizedBaseContracts": [
              4504
            ],
            "name": "GovernanceVote",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 3997,
                "libraryName": {
                  "contractScope": null,
                  "id": 3995,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "354:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "348:27:13",
                "typeName": {
                  "id": 3996,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "367:7:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "id": 3999,
                "mutability": "mutable",
                "name": "_name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "379:20:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3998,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "379:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4001,
                "mutability": "mutable",
                "name": "_symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "403:22:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 4000,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "403:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4003,
                "mutability": "mutable",
                "name": "_decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "429:23:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 4002,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "429:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4005,
                "mutability": "mutable",
                "name": "_poolId",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "456:21:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 4004,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "456:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4007,
                "mutability": "mutable",
                "name": "_lpMultiplier",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "481:27:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 4006,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "481:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4009,
                "mutability": "mutable",
                "name": "_singleStakingMultiplier",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "512:38:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 4008,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "512:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 4011,
                "mutability": "mutable",
                "name": "_govTokenReservePosition",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "554:38:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 4010,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "554:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "functionSelector": "05268cff",
                "id": 4013,
                "mutability": "mutable",
                "name": "govToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "597:32:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                  "typeString": "contract IGovernanceToken"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 4012,
                  "name": "IGovernanceToken",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9031,
                  "src": "597:16:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                    "typeString": "contract IGovernanceToken"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "6837f4ca",
                "id": 4015,
                "mutability": "mutable",
                "name": "masterBreeder",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "633:35:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                  "typeString": "contract IMasterBreeder"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 4014,
                  "name": "IMasterBreeder",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9369,
                  "src": "633:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                    "typeString": "contract IMasterBreeder"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "452ed4f1",
                "id": 4017,
                "mutability": "mutable",
                "name": "lpPair",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "672:28:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                  "typeString": "contract IUniswapV2Pair"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 4016,
                  "name": "IUniswapV2Pair",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11977,
                  "src": "672:14:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                    "typeString": "contract IUniswapV2Pair"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f03c7c6e",
                "id": 4019,
                "mutability": "mutable",
                "name": "pit",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4504,
                "src": "704:17:13",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$1045",
                  "typeString": "contract IERC20"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 4018,
                  "name": "IERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1045,
                  "src": "704:6:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$1045",
                    "typeString": "contract IERC20"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4086,
                  "nodeType": "Block",
                  "src": "1029:339:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4042,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3999,
                          "src": "1035:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4043,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4021,
                          "src": "1043:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "1035:13:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 4045,
                      "nodeType": "ExpressionStatement",
                      "src": "1035:13:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4046,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4001,
                          "src": "1054:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4047,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4023,
                          "src": "1064:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "1054:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 4049,
                      "nodeType": "ExpressionStatement",
                      "src": "1054:17:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4050,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4003,
                          "src": "1077:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "3138",
                          "id": 4051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1089:2:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "src": "1077:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 4053,
                      "nodeType": "ExpressionStatement",
                      "src": "1077:14:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4054,
                          "name": "govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4013,
                          "src": "1097:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                            "typeString": "contract IGovernanceToken"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4055,
                          "name": "govToken_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4025,
                          "src": "1108:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                            "typeString": "contract IGovernanceToken"
                          }
                        },
                        "src": "1097:20:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                          "typeString": "contract IGovernanceToken"
                        }
                      },
                      "id": 4057,
                      "nodeType": "ExpressionStatement",
                      "src": "1097:20:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4058,
                          "name": "pit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4019,
                          "src": "1123:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$1045",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4059,
                          "name": "pit_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4027,
                          "src": "1129:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$1045",
                            "typeString": "contract IERC20"
                          }
                        },
                        "src": "1123:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 4061,
                      "nodeType": "ExpressionStatement",
                      "src": "1123:10:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4062,
                          "name": "masterBreeder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4015,
                          "src": "1139:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                            "typeString": "contract IMasterBreeder"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4063,
                          "name": "masterBreeder_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4029,
                          "src": "1155:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                            "typeString": "contract IMasterBreeder"
                          }
                        },
                        "src": "1139:30:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                          "typeString": "contract IMasterBreeder"
                        }
                      },
                      "id": 4065,
                      "nodeType": "ExpressionStatement",
                      "src": "1139:30:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4066,
                          "name": "_poolId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4005,
                          "src": "1175:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4067,
                          "name": "poolId_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4031,
                          "src": "1185:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "1175:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 4069,
                      "nodeType": "ExpressionStatement",
                      "src": "1175:17:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4070,
                          "name": "lpPair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4017,
                          "src": "1198:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                            "typeString": "contract IUniswapV2Pair"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4071,
                          "name": "lpPair_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4033,
                          "src": "1207:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                            "typeString": "contract IUniswapV2Pair"
                          }
                        },
                        "src": "1198:16:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                          "typeString": "contract IUniswapV2Pair"
                        }
                      },
                      "id": 4073,
                      "nodeType": "ExpressionStatement",
                      "src": "1198:16:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4074,
                          "name": "_govTokenReservePosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4011,
                          "src": "1220:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4075,
                          "name": "govTokenReservePosition_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4035,
                          "src": "1247:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "1220:51:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 4077,
                      "nodeType": "ExpressionStatement",
                      "src": "1220:51:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4080,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4078,
                          "name": "_lpMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4007,
                          "src": "1277:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4079,
                          "name": "lpMultiplier_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4037,
                          "src": "1293:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "1277:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 4081,
                      "nodeType": "ExpressionStatement",
                      "src": "1277:29:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4082,
                          "name": "_singleStakingMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4009,
                          "src": "1312:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4083,
                          "name": "singleStakingMultiplier_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4039,
                          "src": "1339:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "1312:51:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 4085,
                      "nodeType": "ExpressionStatement",
                      "src": "1312:51:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 4087,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4040,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4021,
                      "mutability": "mutable",
                      "name": "name_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "743:19:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4020,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "743:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4023,
                      "mutability": "mutable",
                      "name": "symbol_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "768:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4022,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "768:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4025,
                      "mutability": "mutable",
                      "name": "govToken_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "795:26:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                        "typeString": "contract IGovernanceToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4024,
                        "name": "IGovernanceToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9031,
                        "src": "795:16:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                          "typeString": "contract IGovernanceToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4027,
                      "mutability": "mutable",
                      "name": "pit_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "827:11:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4026,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "827:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4029,
                      "mutability": "mutable",
                      "name": "masterBreeder_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "844:29:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                        "typeString": "contract IMasterBreeder"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4028,
                        "name": "IMasterBreeder",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9369,
                        "src": "844:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                          "typeString": "contract IMasterBreeder"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4031,
                      "mutability": "mutable",
                      "name": "poolId_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "879:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4030,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "879:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4033,
                      "mutability": "mutable",
                      "name": "lpPair_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "898:22:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                        "typeString": "contract IUniswapV2Pair"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4032,
                        "name": "IUniswapV2Pair",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11977,
                        "src": "898:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                          "typeString": "contract IUniswapV2Pair"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4035,
                      "mutability": "mutable",
                      "name": "govTokenReservePosition_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "926:30:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4034,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "926:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4037,
                      "mutability": "mutable",
                      "name": "lpMultiplier_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "962:19:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4036,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "962:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4039,
                      "mutability": "mutable",
                      "name": "singleStakingMultiplier_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4087,
                      "src": "987:30:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4038,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "987:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "737:284:13"
                },
                "returnParameters": {
                  "id": 4041,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1029:0:13"
                },
                "scope": 4504,
                "src": "726:642:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4094,
                  "nodeType": "Block",
                  "src": "1432:25:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4092,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3999,
                        "src": "1447:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "functionReturnParameters": 4091,
                      "id": 4093,
                      "nodeType": "Return",
                      "src": "1440:12:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 4095,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4088,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1385:2:13"
                },
                "returnParameters": {
                  "id": 4091,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4090,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4095,
                      "src": "1417:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4089,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1417:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1416:15:13"
                },
                "scope": 4504,
                "src": "1372:85:13",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4102,
                  "nodeType": "Block",
                  "src": "1523:27:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4100,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4001,
                        "src": "1538:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "functionReturnParameters": 4099,
                      "id": 4101,
                      "nodeType": "Return",
                      "src": "1531:14:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 4103,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4096,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1476:2:13"
                },
                "returnParameters": {
                  "id": 4099,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4098,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4103,
                      "src": "1508:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4097,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1508:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1507:15:13"
                },
                "scope": 4504,
                "src": "1461:89:13",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4110,
                  "nodeType": "Block",
                  "src": "1610:29:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4108,
                        "name": "_decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4003,
                        "src": "1625:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "functionReturnParameters": 4107,
                      "id": 4109,
                      "nodeType": "Return",
                      "src": "1618:16:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 4111,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4104,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1571:2:13"
                },
                "returnParameters": {
                  "id": 4107,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4106,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4111,
                      "src": "1603:5:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4105,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1603:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1602:7:13"
                },
                "scope": 4504,
                "src": "1554:85:13",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4122,
                  "nodeType": "Block",
                  "src": "1710:13:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1719:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "functionReturnParameters": 4119,
                      "id": 4121,
                      "nodeType": "Return",
                      "src": "1712:8:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 4123,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4116,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4113,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4123,
                      "src": "1662:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4112,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1662:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4115,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4123,
                      "src": "1671:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4114,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1661:18:13"
                },
                "returnParameters": {
                  "id": 4119,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4118,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4123,
                      "src": "1701:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4117,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1701:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1700:9:13"
                },
                "scope": 4504,
                "src": "1643:80:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4134,
                  "nodeType": "Block",
                  "src": "1789:17:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1798:5:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 4131,
                      "id": 4133,
                      "nodeType": "Return",
                      "src": "1791:12:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 4135,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4128,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4125,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4135,
                      "src": "1744:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4124,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1744:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4127,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4135,
                      "src": "1753:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4126,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1753:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1743:18:13"
                },
                "returnParameters": {
                  "id": 4131,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4130,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4135,
                      "src": "1783:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4129,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1783:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1782:6:13"
                },
                "scope": 4504,
                "src": "1726:80:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4146,
                  "nodeType": "Block",
                  "src": "1871:17:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1880:5:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 4143,
                      "id": 4145,
                      "nodeType": "Return",
                      "src": "1873:12:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 4147,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4140,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4137,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4147,
                      "src": "1826:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4136,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1826:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4139,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4147,
                      "src": "1835:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4138,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1835:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1825:18:13"
                },
                "returnParameters": {
                  "id": 4143,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4142,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4147,
                      "src": "1865:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4141,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1865:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1864:6:13"
                },
                "scope": 4504,
                "src": "1809:79:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4160,
                  "nodeType": "Block",
                  "src": "1967:17:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1976:5:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 4157,
                      "id": 4159,
                      "nodeType": "Return",
                      "src": "1969:12:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 4161,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4154,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4149,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "1913:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4148,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1913:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4151,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "1922:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4150,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1922:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4153,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "1931:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1931:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1912:27:13"
                },
                "returnParameters": {
                  "id": 4157,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4156,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "1961:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4155,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1961:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1960:6:13"
                },
                "scope": 4504,
                "src": "1891:93:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4198,
                  "nodeType": "Block",
                  "src": "2045:301:13",
                  "statements": [
                    {
                      "assignments": [
                        4167,
                        4169,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4167,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4198,
                          "src": "2052:16:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4166,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2052:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 4169,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4198,
                          "src": "2070:16:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4168,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2070:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 4173,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4170,
                            "name": "lpPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4017,
                            "src": "2091:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "id": 4171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11919,
                          "src": "2091:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 4172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2091:20:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2051:60:13"
                    },
                    {
                      "assignments": [
                        4175
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4175,
                          "mutability": "mutable",
                          "name": "_govTokenReserve",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4198,
                          "src": "2117:24:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4174,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2117:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4177,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2144:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2117:28:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 4180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4178,
                          "name": "_govTokenReservePosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4011,
                          "src": "2156:24:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2184:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2156:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 4188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4186,
                            "name": "_govTokenReservePosition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "2239:24:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2267:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2239:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4194,
                        "nodeType": "IfStatement",
                        "src": "2235:77:13",
                        "trueBody": {
                          "id": 4193,
                          "nodeType": "Block",
                          "src": "2270:42:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4189,
                                  "name": "_govTokenReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4175,
                                  "src": "2278:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4190,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4169,
                                  "src": "2297:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2278:27:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4192,
                              "nodeType": "ExpressionStatement",
                              "src": "2278:27:13"
                            }
                          ]
                        }
                      },
                      "id": 4195,
                      "nodeType": "IfStatement",
                      "src": "2152:160:13",
                      "trueBody": {
                        "id": 4185,
                        "nodeType": "Block",
                        "src": "2187:42:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4181,
                                "name": "_govTokenReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4175,
                                "src": "2195:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 4182,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4167,
                                "src": "2214:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2195:27:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4184,
                            "nodeType": "ExpressionStatement",
                            "src": "2195:27:13"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4196,
                        "name": "_govTokenReserve",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4175,
                        "src": "2325:16:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4165,
                      "id": 4197,
                      "nodeType": "Return",
                      "src": "2318:23:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "82291b76",
                "id": 4199,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "govTokenReserve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4162,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2012:2:13"
                },
                "returnParameters": {
                  "id": 4165,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4164,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4199,
                      "src": "2036:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4163,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2036:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2035:9:13"
                },
                "scope": 4504,
                "src": "1988:358:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4249,
                  "nodeType": "Block",
                  "src": "2400:286:13",
                  "statements": [
                    {
                      "assignments": [
                        4205
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4205,
                          "mutability": "mutable",
                          "name": "pitTotalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4249,
                          "src": "2406:22:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4204,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2406:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4209,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4206,
                            "name": "pit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4019,
                            "src": "2431:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 976,
                          "src": "2431:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 4208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2431:17:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2406:42:13"
                    },
                    {
                      "assignments": [
                        4211
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4211,
                          "mutability": "mutable",
                          "name": "govTokenPitBalance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4249,
                          "src": "2454:26:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4210,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2454:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4219,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4216,
                                "name": "pit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4019,
                                "src": "2510:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 4215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2502:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4214,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2502:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2502:12:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4212,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "2483:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                              "typeString": "contract IGovernanceToken"
                            }
                          },
                          "id": 4213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8817,
                          "src": "2483:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2483:32:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2454:61:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4220,
                            "name": "pitTotalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4205,
                            "src": "2525:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2542:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2525:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4223,
                            "name": "govTokenPitBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4211,
                            "src": "2547:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2568:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2547:22:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2525:44:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4238,
                      "nodeType": "IfStatement",
                      "src": "2521:124:13",
                      "trueBody": {
                        "id": 4237,
                        "nodeType": "Block",
                        "src": "2571:74:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4234,
                                  "name": "pitTotalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4205,
                                  "src": "2623:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "id": 4231,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 4229,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2609:2:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3138",
                                        "id": 4230,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2615:2:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "src": "2609:8:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4227,
                                      "name": "govTokenPitBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4211,
                                      "src": "2586:18:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4228,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "2586:22:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2586:32:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 369,
                                "src": "2586:36:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2586:52:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4203,
                            "id": 4236,
                            "nodeType": "Return",
                            "src": "2579:59:13"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 4246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 4244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2672:2:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 4245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2678:2:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "2672:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2665:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2657:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 4239,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2657:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2657:10:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 347,
                          "src": "2657:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2657:24:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4203,
                      "id": 4248,
                      "nodeType": "Return",
                      "src": "2650:31:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e88a9886",
                "id": 4250,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pitRatio",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4200,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2367:2:13"
                },
                "returnParameters": {
                  "id": 4203,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4202,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4250,
                      "src": "2391:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4201,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2391:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2390:9:13"
                },
                "scope": 4504,
                "src": "2350:336:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4268,
                  "nodeType": "Block",
                  "src": "2761:53:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 4265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 4263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2800:2:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 4264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2806:2:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "2800:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4259,
                                  "name": "pitRatio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4250,
                                  "src": "2784:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 4260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2784:10:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4257,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4252,
                                "src": "2774:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "2774:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2774:21:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "2774:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2774:35:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4256,
                      "id": 4267,
                      "nodeType": "Return",
                      "src": "2767:42:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3b315fde",
                "id": 4269,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "adjustedPitValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4253,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4252,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4269,
                      "src": "2716:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4251,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2716:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2715:15:13"
                },
                "returnParameters": {
                  "id": 4256,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4255,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4269,
                      "src": "2752:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4254,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2752:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2751:9:13"
                },
                "scope": 4504,
                "src": "2690:124:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4368,
                  "nodeType": "Block",
                  "src": "2871:1130:13",
                  "statements": [
                    {
                      "assignments": [
                        4275
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4275,
                          "mutability": "mutable",
                          "name": "govTokenCurrentReserve",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4368,
                          "src": "2877:30:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4274,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2877:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4278,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4276,
                          "name": "govTokenReserve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4199,
                          "src": "2910:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 4277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2910:17:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2877:50:13"
                    },
                    {
                      "assignments": [
                        4280
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4280,
                          "mutability": "mutable",
                          "name": "pitTotalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4368,
                          "src": "2933:22:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4279,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2933:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4284,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4281,
                            "name": "pit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4019,
                            "src": "2958:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 976,
                          "src": "2958:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 4283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2958:17:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2933:42:13"
                    },
                    {
                      "assignments": [
                        4286
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4286,
                          "mutability": "mutable",
                          "name": "unlockedTotal",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4368,
                          "src": "2981:21:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4285,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2981:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4290,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4287,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "3005:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                              "typeString": "contract IGovernanceToken"
                            }
                          },
                          "id": 4288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "unlockedSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8899,
                          "src": "3005:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 4289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3005:25:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2981:49:13"
                    },
                    {
                      "assignments": [
                        4292
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4292,
                          "mutability": "mutable",
                          "name": "lockedTotal",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4368,
                          "src": "3036:19:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4291,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3036:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4296,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4293,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "3058:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                              "typeString": "contract IGovernanceToken"
                            }
                          },
                          "id": 4294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalLock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8914,
                          "src": "3058:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 4295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3058:20:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3036:42:13"
                    },
                    {
                      "assignments": [
                        4298
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4298,
                          "mutability": "mutable",
                          "name": "calculatedTotalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4368,
                          "src": "3085:29:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4297,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3085:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4300,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3117:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3085:33:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4301,
                          "name": "govTokenCurrentReserve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4275,
                          "src": "3221:22:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3246:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3221:26:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4312,
                      "nodeType": "IfStatement",
                      "src": "3217:112:13",
                      "trueBody": {
                        "id": 4311,
                        "nodeType": "Block",
                        "src": "3249:80:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4304,
                                "name": "calculatedTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4298,
                                "src": "3257:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4307,
                                    "name": "_lpMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4007,
                                    "src": "3308:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4305,
                                    "name": "govTokenCurrentReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4275,
                                    "src": "3281:22:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "3281:26:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3281:41:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3257:65:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4310,
                            "nodeType": "ExpressionStatement",
                            "src": "3257:65:13"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4313,
                          "name": "pitTotalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4280,
                          "src": "3434:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3451:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3434:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4329,
                      "nodeType": "IfStatement",
                      "src": "3430:168:13",
                      "trueBody": {
                        "id": 4328,
                        "nodeType": "Block",
                        "src": "3454:144:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4316,
                                "name": "calculatedTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4298,
                                "src": "3462:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4323,
                                        "name": "_singleStakingMultiplier",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4009,
                                        "src": "3558:24:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4320,
                                            "name": "pitTotalSupply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4280,
                                            "src": "3538:14:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4319,
                                          "name": "adjustedPitValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4269,
                                          "src": "3521:16:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256) view returns (uint256)"
                                          }
                                        },
                                        "id": 4321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3521:32:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "3521:36:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3521:62:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4317,
                                    "name": "calculatedTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "3486:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "3486:25:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3486:105:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3462:129:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4327,
                            "nodeType": "ExpressionStatement",
                            "src": "3462:129:13"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4330,
                          "name": "lockedTotal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4292,
                          "src": "3666:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3680:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3666:15:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4347,
                      "nodeType": "IfStatement",
                      "src": "3662:115:13",
                      "trueBody": {
                        "id": 4346,
                        "nodeType": "Block",
                        "src": "3683:94:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4333,
                                "name": "calculatedTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4298,
                                "src": "3691:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 4341,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3765:3:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3333",
                                            "id": 4338,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3757:2:13",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_33_by_1",
                                              "typeString": "int_const 33"
                                            },
                                            "value": "33"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_33_by_1",
                                              "typeString": "int_const 33"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4336,
                                            "name": "lockedTotal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4292,
                                            "src": "3741:11:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4337,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "3741:15:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3741:19:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4340,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "3741:23:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3741:28:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4334,
                                    "name": "calculatedTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "3715:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "3715:25:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3715:55:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3691:79:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4345,
                            "nodeType": "ExpressionStatement",
                            "src": "3691:79:13"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4348,
                          "name": "unlockedTotal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4286,
                          "src": "3847:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3863:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3847:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4365,
                      "nodeType": "IfStatement",
                      "src": "3843:119:13",
                      "trueBody": {
                        "id": 4364,
                        "nodeType": "Block",
                        "src": "3866:96:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4351,
                                "name": "calculatedTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4298,
                                "src": "3874:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 4359,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3950:3:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3235",
                                            "id": 4356,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3942:2:13",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_25_by_1",
                                              "typeString": "int_const 25"
                                            },
                                            "value": "25"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_25_by_1",
                                              "typeString": "int_const 25"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4354,
                                            "name": "unlockedTotal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4286,
                                            "src": "3924:13:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4355,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "3924:17:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4357,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3924:21:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4358,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "3924:25:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4360,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3924:30:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4352,
                                    "name": "calculatedTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "3898:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "3898:25:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3898:57:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3874:81:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4363,
                            "nodeType": "ExpressionStatement",
                            "src": "3874:81:13"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4366,
                        "name": "calculatedTotalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4298,
                        "src": "3975:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4273,
                      "id": 4367,
                      "nodeType": "Return",
                      "src": "3968:28:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 4369,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4270,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2838:2:13"
                },
                "returnParameters": {
                  "id": 4273,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4272,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4369,
                      "src": "2862:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4271,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2862:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2861:9:13"
                },
                "scope": 4504,
                "src": "2818:1183:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4502,
                  "nodeType": "Block",
                  "src": "4069:1119:13",
                  "statements": [
                    {
                      "assignments": [
                        4377
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4377,
                          "mutability": "mutable",
                          "name": "votingPower",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4079:19:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4376,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4079:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4379,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4101:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4079:23:13"
                    },
                    {
                      "assignments": [
                        4381
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4381,
                          "mutability": "mutable",
                          "name": "govTokenCurrentReserve",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4109:30:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4380,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4109:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4384,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4382,
                          "name": "govTokenReserve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4199,
                          "src": "4142:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 4383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4142:17:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4109:50:13"
                    },
                    {
                      "assignments": [
                        4386,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4386,
                          "mutability": "mutable",
                          "name": "userLpTokenAmountInPool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4167:31:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4385,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4167:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 4392,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4389,
                            "name": "_poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4005,
                            "src": "4227:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4390,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4371,
                            "src": "4236:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4387,
                            "name": "masterBreeder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4015,
                            "src": "4204:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterBreeder_$9369",
                              "typeString": "contract IMasterBreeder"
                            }
                          },
                          "id": 4388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userInfo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9086,
                          "src": "4204:22:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,address) view external returns (uint256,uint256)"
                          }
                        },
                        "id": 4391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4204:38:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4166:76:13"
                    },
                    {
                      "assignments": [
                        4394
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4394,
                          "mutability": "mutable",
                          "name": "pairTotal",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4248:17:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4393,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4248:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4398,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4395,
                            "name": "lpPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4017,
                            "src": "4268:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "id": 4396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11773,
                          "src": "4268:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 4397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4268:20:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4248:40:13"
                    },
                    {
                      "assignments": [
                        4400
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4400,
                          "mutability": "mutable",
                          "name": "userShare",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4338:17:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4399,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4338:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4408,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4406,
                            "name": "pairTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "4396:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31653132",
                                "id": 4403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4386:4:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000_by_1",
                                  "typeString": "int_const 1000000000000"
                                },
                                "value": "1e12"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000000000000_by_1",
                                  "typeString": "int_const 1000000000000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4401,
                                "name": "userLpTokenAmountInPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4386,
                                "src": "4358:23:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "4358:27:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4358:33:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "4358:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4358:48:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4338:68:13"
                    },
                    {
                      "assignments": [
                        4410
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4410,
                          "mutability": "mutable",
                          "name": "pairUnderlying",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4412:22:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4409,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4412:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4418,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31653132",
                            "id": 4416,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4479:4:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000_by_1",
                              "typeString": "int_const 1000000000000"
                            },
                            "value": "1e12"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000000000000_by_1",
                              "typeString": "int_const 1000000000000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4413,
                                "name": "userShare",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4400,
                                "src": "4464:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4411,
                                "name": "govTokenCurrentReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4381,
                                "src": "4437:22:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "4437:26:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4437:37:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "4437:41:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4437:47:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4412:72:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4419,
                          "name": "votingPower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4377,
                          "src": "4490:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4422,
                              "name": "_lpMultiplier",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4007,
                              "src": "4523:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4420,
                              "name": "pairUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4410,
                              "src": "4504:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 347,
                            "src": "4504:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4504:33:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4490:47:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4425,
                      "nodeType": "ExpressionStatement",
                      "src": "4490:47:13"
                    },
                    {
                      "assignments": [
                        4427
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4427,
                          "mutability": "mutable",
                          "name": "pitBalance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4583:18:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4426,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4583:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4432,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4430,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4371,
                            "src": "4618:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4428,
                            "name": "pit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4019,
                            "src": "4604:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "4604:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4604:20:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4583:41:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4433,
                          "name": "pitBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4427,
                          "src": "4634:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4647:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4634:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4449,
                      "nodeType": "IfStatement",
                      "src": "4630:140:13",
                      "trueBody": {
                        "id": 4448,
                        "nodeType": "Block",
                        "src": "4650:120:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4436,
                                "name": "votingPower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4377,
                                "src": "4658:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4443,
                                        "name": "_singleStakingMultiplier",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4009,
                                        "src": "4730:24:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4440,
                                            "name": "pitBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4427,
                                            "src": "4714:10:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4439,
                                          "name": "adjustedPitValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4269,
                                          "src": "4697:16:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256) view returns (uint256)"
                                          }
                                        },
                                        "id": 4441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4697:28:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4442,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "4697:32:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4444,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4697:58:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4437,
                                    "name": "votingPower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4377,
                                    "src": "4672:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "4672:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4672:91:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4658:105:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4447,
                            "nodeType": "ExpressionStatement",
                            "src": "4658:105:13"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        4451
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4451,
                          "mutability": "mutable",
                          "name": "lockedBalance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4806:21:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4450,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4806:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4456,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4454,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4371,
                            "src": "4846:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4452,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "4830:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                              "typeString": "contract IGovernanceToken"
                            }
                          },
                          "id": 4453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lockOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8942,
                          "src": "4830:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4830:22:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4806:46:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4457,
                          "name": "lockedBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4451,
                          "src": "4862:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4878:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4862:17:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4474,
                      "nodeType": "IfStatement",
                      "src": "4858:99:13",
                      "trueBody": {
                        "id": 4473,
                        "nodeType": "Block",
                        "src": "4881:76:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4460,
                                "name": "votingPower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4377,
                                "src": "4889:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 4468,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4945:3:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3333",
                                            "id": 4465,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4937:2:13",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_33_by_1",
                                              "typeString": "int_const 33"
                                            },
                                            "value": "33"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_33_by_1",
                                              "typeString": "int_const 33"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4463,
                                            "name": "lockedBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4451,
                                            "src": "4919:13:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4464,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "4919:17:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4466,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4919:21:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "4919:25:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4919:30:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4461,
                                    "name": "votingPower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4377,
                                    "src": "4903:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4462,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "4903:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4903:47:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4889:61:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4472,
                            "nodeType": "ExpressionStatement",
                            "src": "4889:61:13"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        4476
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4476,
                          "mutability": "mutable",
                          "name": "govTokenBalance",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4502,
                          "src": "4995:23:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4475,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4995:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4481,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4479,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4371,
                            "src": "5040:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4477,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "5021:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGovernanceToken_$9031",
                              "typeString": "contract IGovernanceToken"
                            }
                          },
                          "id": 4478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8817,
                          "src": "5021:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5021:25:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4995:51:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4482,
                          "name": "govTokenBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4476,
                          "src": "5056:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5074:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5056:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4499,
                      "nodeType": "IfStatement",
                      "src": "5052:103:13",
                      "trueBody": {
                        "id": 4498,
                        "nodeType": "Block",
                        "src": "5077:78:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 4496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 4485,
                                "name": "votingPower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4377,
                                "src": "5085:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 4493,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5143:3:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3235",
                                            "id": 4490,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5135:2:13",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_25_by_1",
                                              "typeString": "int_const 25"
                                            },
                                            "value": "25"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_25_by_1",
                                              "typeString": "int_const 25"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4488,
                                            "name": "govTokenBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4476,
                                            "src": "5115:15:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4489,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "5115:19:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5115:23:13",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "5115:27:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5115:32:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4486,
                                    "name": "votingPower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4377,
                                    "src": "5099:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4487,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "5099:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5099:49:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5085:63:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4497,
                            "nodeType": "ExpressionStatement",
                            "src": "5085:63:13"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4500,
                        "name": "votingPower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4377,
                        "src": "5172:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4375,
                      "id": 4501,
                      "nodeType": "Return",
                      "src": "5165:18:13"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 4503,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4372,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4371,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4503,
                      "src": "4024:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4370,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4024:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4023:15:13"
                },
                "returnParameters": {
                  "id": 4375,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4374,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4503,
                      "src": "4060:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4373,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4060:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4059:9:13"
                },
                "scope": 4504,
                "src": "4005:1183:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 4505,
            "src": "320:4870:13"
          }
        ],
        "src": "33:5158:13"
      }
    },
    "contracts/MasterBank.sol": {
      "id": 14,
      "AST": {
        "absolutePath": "contracts/MasterBank.sol",
        "exportedSymbols": {
          "MasterBank": [
            4689
          ]
        },
        "id": 4690,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4506,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:14"
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 4507,
            "nodeType": "ImportDirective",
            "scope": 4690,
            "sourceUnit": 465,
            "src": "58:51:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 4508,
            "nodeType": "ImportDirective",
            "scope": 4690,
            "sourceUnit": 1046,
            "src": "110:56:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 4509,
            "nodeType": "ImportDirective",
            "scope": 4690,
            "sourceUnit": 110,
            "src": "167:52:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4510,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "244:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 4511,
                "nodeType": "InheritanceSpecifier",
                "src": "244:7:14"
              }
            ],
            "contractDependencies": [
              109,
              1577
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 4689,
            "linearizedBaseContracts": [
              4689,
              109,
              1577
            ],
            "name": "MasterBank",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 4514,
                "libraryName": {
                  "contractScope": null,
                  "id": 4512,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "264:8:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "258:27:14",
                "typeName": {
                  "id": 4513,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "277:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "4325dea0",
                "id": 4516,
                "mutability": "mutable",
                "name": "_currency",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "291:24:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4515,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "291:7:14",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "144f2f94",
                "id": 4518,
                "mutability": "mutable",
                "name": "_burn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "322:20:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4517,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "322:7:14",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "ab7cc2db",
                "id": 4520,
                "mutability": "mutable",
                "name": "_mb",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "349:18:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4519,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "349:7:14",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "e79ffa11",
                "id": 4522,
                "mutability": "mutable",
                "name": "_dev",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "374:19:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4521,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "374:7:14",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 4524,
                "mutability": "mutable",
                "name": "_burnp",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "400:14:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4523,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "400:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4526,
                "mutability": "mutable",
                "name": "_mbp",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "420:12:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4525,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "420:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4528,
                "mutability": "mutable",
                "name": "_devp",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4689,
                "src": "438:13:14",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4527,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "438:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 4573,
                  "nodeType": "Block",
                  "src": "570:157:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4545,
                          "name": "_currency",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4516,
                          "src": "580:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4546,
                          "name": "CC",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4530,
                          "src": "592:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "580:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4548,
                      "nodeType": "ExpressionStatement",
                      "src": "580:14:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4549,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4518,
                          "src": "604:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4550,
                          "name": "BURN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4532,
                          "src": "612:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "604:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4552,
                      "nodeType": "ExpressionStatement",
                      "src": "604:12:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4553,
                          "name": "_mb",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4520,
                          "src": "626:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4554,
                          "name": "MB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "632:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "626:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4556,
                      "nodeType": "ExpressionStatement",
                      "src": "626:8:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4557,
                          "name": "_dev",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4522,
                          "src": "644:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4558,
                          "name": "DEV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4536,
                          "src": "651:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "644:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4560,
                      "nodeType": "ExpressionStatement",
                      "src": "644:10:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4561,
                          "name": "_burnp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4524,
                          "src": "664:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4562,
                          "name": "BURNP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4538,
                          "src": "673:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "664:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4564,
                      "nodeType": "ExpressionStatement",
                      "src": "664:14:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4565,
                          "name": "_mbp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4526,
                          "src": "688:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4566,
                          "name": "MBP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4540,
                          "src": "695:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "688:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4568,
                      "nodeType": "ExpressionStatement",
                      "src": "688:10:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4569,
                          "name": "_devp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4528,
                          "src": "708:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4570,
                          "name": "DEVP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4542,
                          "src": "716:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "708:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4572,
                      "nodeType": "ExpressionStatement",
                      "src": "708:12:14"
                    }
                  ]
                },
                "documentation": null,
                "id": 4574,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4543,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4530,
                      "mutability": "mutable",
                      "name": "CC",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "470:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4529,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "470:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4532,
                      "mutability": "mutable",
                      "name": "BURN",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "482:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4531,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "482:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4534,
                      "mutability": "mutable",
                      "name": "MB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "496:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4533,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "496:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4536,
                      "mutability": "mutable",
                      "name": "DEV",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "508:11:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4535,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4538,
                      "mutability": "mutable",
                      "name": "BURNP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "521:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4537,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "521:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4540,
                      "mutability": "mutable",
                      "name": "MBP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "536:11:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4539,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "536:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4542,
                      "mutability": "mutable",
                      "name": "DEVP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4574,
                      "src": "549:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4541,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "549:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "469:93:14"
                },
                "returnParameters": {
                  "id": 4544,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "570:0:14"
                },
                "scope": 4689,
                "src": "458:269:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4578,
                "name": "Bought",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4577,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4576,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4578,
                      "src": "746:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4575,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "745:16:14"
                },
                "src": "733:29:14"
              },
              {
                "body": {
                  "id": 4651,
                  "nodeType": "Block",
                  "src": "822:403:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4584,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4580,
                              "src": "840:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130303030303030303030303030303030303030",
                              "id": 4585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "850:20:14",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000000000000000000_by_1",
                                "typeString": "int_const 10000000000000000000"
                              },
                              "value": "10000000000000000000"
                            },
                            "src": "840:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "416d6f756e74206973206e6f742067726561746572207468616e203130",
                            "id": 4587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "872:31:14",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_477878192dfa0d1a3c667e594bf5b775a6b495ccc1f93785e09ddee1609872d7",
                              "typeString": "literal_string \"Amount is not greater than 10\""
                            },
                            "value": "Amount is not greater than 10"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_477878192dfa0d1a3c667e594bf5b775a6b495ccc1f93785e09ddee1609872d7",
                              "typeString": "literal_string \"Amount is not greater than 10\""
                            }
                          ],
                          "id": 4583,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "832:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "832:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4589,
                      "nodeType": "ExpressionStatement",
                      "src": "832:72:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4594,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "945:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "945:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4598,
                                "name": "_burn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4518,
                                "src": "965:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "957:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4596,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "957:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "957:14:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 4605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "996:3:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4602,
                                    "name": "_burnp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4524,
                                    "src": "984:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4600,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4580,
                                    "src": "973:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "973:10:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "973:18:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 369,
                              "src": "973:22:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "973:27:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4591,
                                "name": "_currency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4516,
                                "src": "921:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4590,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "914:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "914:17:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1026,
                          "src": "914:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 4607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "914:87:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4608,
                      "nodeType": "ExpressionStatement",
                      "src": "914:87:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4613,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1042:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1042:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4617,
                                "name": "_mb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4520,
                                "src": "1062:3:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1054:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4615,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1054:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1054:12:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 4624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1089:3:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4621,
                                    "name": "_mbp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4526,
                                    "src": "1079:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4619,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4580,
                                    "src": "1068:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "1068:10:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1068:16:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 369,
                              "src": "1068:20:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1068:25:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4610,
                                "name": "_currency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4516,
                                "src": "1018:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4609,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "1011:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1011:17:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1026,
                          "src": "1011:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 4626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1011:83:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4627,
                      "nodeType": "ExpressionStatement",
                      "src": "1011:83:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4632,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1135:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1135:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4636,
                                "name": "_dev",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4522,
                                "src": "1155:4:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1147:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4634,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1147:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1147:13:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 4643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1184:3:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4640,
                                    "name": "_devp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4528,
                                    "src": "1173:5:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4638,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4580,
                                    "src": "1162:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "1162:10:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1162:17:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 369,
                              "src": "1162:21:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1162:26:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4629,
                                "name": "_currency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4516,
                                "src": "1111:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4628,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "1104:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1104:17:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1026,
                          "src": "1104:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 4645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1104:85:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4646,
                      "nodeType": "ExpressionStatement",
                      "src": "1104:85:14"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4648,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4580,
                            "src": "1211:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4647,
                          "name": "Bought",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4578,
                          "src": "1204:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 4649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1204:14:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4650,
                      "nodeType": "EmitStatement",
                      "src": "1199:19:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "61cfe85e",
                "id": 4652,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "BuyGameTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4581,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4580,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "791:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4579,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "791:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "790:16:14"
                },
                "returnParameters": {
                  "id": 4582,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "822:0:14"
                },
                "scope": 4689,
                "src": "768:457:14",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4663,
                  "nodeType": "Block",
                  "src": "1293:34:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4659,
                          "name": "_burnp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4524,
                          "src": "1303:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4660,
                          "name": "_newlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4654,
                          "src": "1312:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1303:17:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4662,
                      "nodeType": "ExpressionStatement",
                      "src": "1303:17:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "cb1d555a",
                "id": 4664,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 4657,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4656,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "1283:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1283:9:14"
                  }
                ],
                "name": "burnpercentupdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4655,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4654,
                      "mutability": "mutable",
                      "name": "_newlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4664,
                      "src": "1258:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4653,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1258:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1257:18:14"
                },
                "returnParameters": {
                  "id": 4658,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1293:0:14"
                },
                "scope": 4689,
                "src": "1231:96:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4675,
                  "nodeType": "Block",
                  "src": "1387:32:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4671,
                          "name": "_mbp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4526,
                          "src": "1397:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4672,
                          "name": "_newlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4666,
                          "src": "1404:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1397:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4674,
                      "nodeType": "ExpressionStatement",
                      "src": "1397:15:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "935db0a6",
                "id": 4676,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 4669,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4668,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "1377:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1377:9:14"
                  }
                ],
                "name": "mbpupdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4667,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4666,
                      "mutability": "mutable",
                      "name": "_newlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4676,
                      "src": "1352:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4665,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1352:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1351:18:14"
                },
                "returnParameters": {
                  "id": 4670,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1387:0:14"
                },
                "scope": 4689,
                "src": "1333:86:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4687,
                  "nodeType": "Block",
                  "src": "1480:33:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4683,
                          "name": "_devp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4528,
                          "src": "1490:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4684,
                          "name": "_newlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4678,
                          "src": "1498:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1490:16:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4686,
                      "nodeType": "ExpressionStatement",
                      "src": "1490:16:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "361b45a8",
                "id": 4688,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 4681,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4680,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "1470:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1470:9:14"
                  }
                ],
                "name": "devpupdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4679,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4678,
                      "mutability": "mutable",
                      "name": "_newlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4688,
                      "src": "1445:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4677,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1445:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1444:18:14"
                },
                "returnParameters": {
                  "id": 4682,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1480:0:14"
                },
                "scope": 4689,
                "src": "1425:88:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 4690,
            "src": "221:1359:14"
          }
        ],
        "src": "33:1548:14"
      }
    },
    "contracts/MasterBreeder.sol": {
      "id": 15,
      "AST": {
        "absolutePath": "contracts/MasterBreeder.sol",
        "exportedSymbols": {
          "MasterBreeder": [
            7400
          ]
        },
        "id": 7401,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4691,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:15"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 4692,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 1046,
            "src": "58:56:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
            "id": 4693,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 1259,
            "src": "115:59:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol",
            "file": "@openzeppelin/contracts/utils/EnumerableSet.sol",
            "id": 4694,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 2070,
            "src": "175:57:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 4695,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 465,
            "src": "233:51:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 4696,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 110,
            "src": "285:52:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
            "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
            "id": 4697,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 2110,
            "src": "338:59:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/GovernanceToken.sol",
            "file": "./GovernanceToken.sol",
            "id": 4698,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 3988,
            "src": "398:31:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/Authorizable.sol",
            "file": "./Authorizable.sol",
            "id": 4699,
            "nodeType": "ImportDirective",
            "scope": 7401,
            "sourceUnit": 2172,
            "src": "430:28:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4700,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "814:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 4701,
                "nodeType": "InheritanceSpecifier",
                "src": "814:7:15"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4702,
                  "name": "Authorizable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2171,
                  "src": "823:12:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Authorizable_$2171",
                    "typeString": "contract Authorizable"
                  }
                },
                "id": 4703,
                "nodeType": "InheritanceSpecifier",
                "src": "823:12:15"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4704,
                  "name": "ReentrancyGuard",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2109,
                  "src": "837:15:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ReentrancyGuard_$2109",
                    "typeString": "contract ReentrancyGuard"
                  }
                },
                "id": 4705,
                "nodeType": "InheritanceSpecifier",
                "src": "837:15:15"
              }
            ],
            "contractDependencies": [
              109,
              1577,
              2109,
              2171
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7400,
            "linearizedBaseContracts": [
              7400,
              2109,
              2171,
              109,
              1577
            ],
            "name": "MasterBreeder",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 4708,
                "libraryName": {
                  "contractScope": null,
                  "id": 4706,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "865:8:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "859:27:15",
                "typeName": {
                  "id": 4707,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "878:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "id": 4711,
                "libraryName": {
                  "contractScope": null,
                  "id": 4709,
                  "name": "SafeERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1258,
                  "src": "897:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeERC20_$1258",
                    "typeString": "library SafeERC20"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "891:27:15",
                "typeName": {
                  "contractScope": null,
                  "id": 4710,
                  "name": "IERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1045,
                  "src": "911:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$1045",
                    "typeString": "contract IERC20"
                  }
                }
              },
              {
                "canonicalName": "MasterBreeder.UserInfo",
                "id": 4726,
                "members": [
                  {
                    "constant": false,
                    "id": 4713,
                    "mutability": "mutable",
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "976:14:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4712,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "976:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4715,
                    "mutability": "mutable",
                    "name": "rewardDebt",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1045:18:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4714,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1045:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4717,
                    "mutability": "mutable",
                    "name": "rewardDebtAtBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1112:25:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4716,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1112:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4719,
                    "mutability": "mutable",
                    "name": "lastWithdrawBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1176:25:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4718,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1176:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4721,
                    "mutability": "mutable",
                    "name": "firstDepositBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1249:25:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4720,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1249:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4723,
                    "mutability": "mutable",
                    "name": "blockdelta",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1323:18:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4722,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1323:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4725,
                    "mutability": "mutable",
                    "name": "lastDepositBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4726,
                    "src": "1383:24:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4724,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1383:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "UserInfo",
                "nodeType": "StructDefinition",
                "scope": 7400,
                "src": "950:1101:15",
                "visibility": "public"
              },
              {
                "canonicalName": "MasterBreeder.UserGlobalInfo",
                "id": 4737,
                "members": [
                  {
                    "constant": false,
                    "id": 4728,
                    "mutability": "mutable",
                    "name": "globalAmount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4737,
                    "src": "2089:20:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4727,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2089:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4732,
                    "mutability": "mutable",
                    "name": "referrals",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4737,
                    "src": "2119:37:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "typeName": {
                      "id": 4731,
                      "keyType": {
                        "id": 4729,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2127:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2119:27:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 4730,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2138:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4734,
                    "mutability": "mutable",
                    "name": "totalReferals",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4737,
                    "src": "2166:21:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4733,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2166:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4736,
                    "mutability": "mutable",
                    "name": "globalRefAmount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4737,
                    "src": "2197:23:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4735,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2197:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "UserGlobalInfo",
                "nodeType": "StructDefinition",
                "scope": 7400,
                "src": "2057:170:15",
                "visibility": "public"
              },
              {
                "canonicalName": "MasterBreeder.PoolInfo",
                "id": 4746,
                "members": [
                  {
                    "constant": false,
                    "id": 4739,
                    "mutability": "mutable",
                    "name": "lpToken",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4746,
                    "src": "2285:14:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$1045",
                      "typeString": "contract IERC20"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 4738,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1045,
                      "src": "2285:6:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4741,
                    "mutability": "mutable",
                    "name": "allocPoint",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4746,
                    "src": "2342:18:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4740,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2342:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4743,
                    "mutability": "mutable",
                    "name": "lastRewardBlock",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4746,
                    "src": "2465:23:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4742,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2465:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4745,
                    "mutability": "mutable",
                    "name": "accGovTokenPerShare",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 4746,
                    "src": "2562:27:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4744,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2562:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "PoolInfo",
                "nodeType": "StructDefinition",
                "scope": 7400,
                "src": "2259:403:15",
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "05268cff",
                "id": 4748,
                "mutability": "mutable",
                "name": "govToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2696:31:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                  "typeString": "contract GovernanceToken"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 4747,
                  "name": "GovernanceToken",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3987,
                  "src": "2696:15:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                    "typeString": "contract GovernanceToken"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c8a4271f",
                "id": 4750,
                "mutability": "mutable",
                "name": "usdOracle",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2770:24:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4749,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2770:7:15",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d49e77cd",
                "id": 4752,
                "mutability": "mutable",
                "name": "devaddr",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2820:22:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4751,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2820:7:15",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "22a376b0",
                "id": 4754,
                "mutability": "mutable",
                "name": "liquidityaddr",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2866:28:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4753,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2866:7:15",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "3c9d9267",
                "id": 4756,
                "mutability": "mutable",
                "name": "comfundaddr",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2930:26:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4755,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2930:7:15",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "ec12173d",
                "id": 4758,
                "mutability": "mutable",
                "name": "founderaddr",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "2984:26:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4757,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2984:7:15",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "975532dc",
                "id": 4760,
                "mutability": "mutable",
                "name": "REWARD_PER_BLOCK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3059:31:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4759,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3059:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "2fda7735",
                "id": 4763,
                "mutability": "mutable",
                "name": "REWARD_MULTIPLIER",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3153:34:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4761,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3153:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4762,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3153:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "4179b4fb",
                "id": 4766,
                "mutability": "mutable",
                "name": "HALVING_AT_BLOCK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3225:33:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4764,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3225:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4765,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3225:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "6245f084",
                "id": 4769,
                "mutability": "mutable",
                "name": "blockDeltaStartStage",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3296:37:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4767,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3296:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4768,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3296:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "cb0b8ca1",
                "id": 4772,
                "mutability": "mutable",
                "name": "blockDeltaEndStage",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3339:35:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4770,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3339:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4771,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3339:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d007db29",
                "id": 4775,
                "mutability": "mutable",
                "name": "userFeeStage",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3380:29:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4773,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3380:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4774,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3380:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "beff2a53",
                "id": 4778,
                "mutability": "mutable",
                "name": "devFeeStage",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3415:28:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 4776,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3415:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4777,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3415:9:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "980c2a98",
                "id": 4780,
                "mutability": "mutable",
                "name": "FINISH_BONUS_AT_BLOCK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3449:36:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4779,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3449:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "82796e98",
                "id": 4782,
                "mutability": "mutable",
                "name": "userDepFee",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3491:25:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4781,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3491:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c56a10ff",
                "id": 4784,
                "mutability": "mutable",
                "name": "devDepFee",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3522:24:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4783,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3522:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "39b3e826",
                "id": 4786,
                "mutability": "mutable",
                "name": "START_BLOCK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3613:26:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4785,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3613:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95fdf258",
                "id": 4788,
                "mutability": "mutable",
                "name": "PERCENT_LOCK_BONUS_REWARD",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3646:40:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4787,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3646:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "ed9bdeda",
                "id": 4790,
                "mutability": "mutable",
                "name": "PERCENT_FOR_DEV",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3731:30:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4789,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3731:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "0a67d518",
                "id": 4792,
                "mutability": "mutable",
                "name": "PERCENT_FOR_LP",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3798:29:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4791,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3798:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "a02306f9",
                "id": 4794,
                "mutability": "mutable",
                "name": "PERCENT_FOR_COM",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3844:30:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4793,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3844:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c6929e53",
                "id": 4796,
                "mutability": "mutable",
                "name": "PERCENT_FOR_FOUNDERS",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3898:35:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4795,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3898:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "1526fe27",
                "id": 4799,
                "mutability": "mutable",
                "name": "poolInfo",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "3983:26:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                  "typeString": "struct MasterBreeder.PoolInfo[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 4797,
                    "name": "PoolInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4746,
                    "src": "3983:8:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                      "typeString": "struct MasterBreeder.PoolInfo"
                    }
                  },
                  "id": 4798,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3983:10:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage_ptr",
                    "typeString": "struct MasterBreeder.PoolInfo[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "ce2529c9",
                "id": 4803,
                "mutability": "mutable",
                "name": "poolId1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "4015:42:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 4802,
                  "keyType": {
                    "id": 4800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4023:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4015:27:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 4801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "93f1a40b",
                "id": 4809,
                "mutability": "mutable",
                "name": "userInfo",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "4205:64:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                  "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo))"
                },
                "typeName": {
                  "id": 4808,
                  "keyType": {
                    "id": 4804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4213:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4205:48:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo))"
                  },
                  "valueType": {
                    "id": 4807,
                    "keyType": {
                      "id": 4805,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4232:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4224:28:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                      "typeString": "mapping(address => struct MasterBreeder.UserInfo)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4806,
                      "name": "UserInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4726,
                      "src": "4243:8:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                        "typeString": "struct MasterBreeder.UserInfo"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d9608d8a",
                "id": 4813,
                "mutability": "mutable",
                "name": "userGlobalInfo",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "4275:56:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                  "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo)"
                },
                "typeName": {
                  "id": 4812,
                  "keyType": {
                    "id": 4810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4283:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4275:34:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                    "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 4811,
                    "name": "UserGlobalInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4737,
                    "src": "4294:14:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                      "typeString": "struct MasterBreeder.UserGlobalInfo"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "cbd258b5",
                "id": 4817,
                "mutability": "mutable",
                "name": "poolExistence",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "4337:44:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1045_$_t_bool_$",
                  "typeString": "mapping(contract IERC20 => bool)"
                },
                "typeName": {
                  "id": 4816,
                  "keyType": {
                    "contractScope": null,
                    "id": 4814,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1045,
                    "src": "4345:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$1045",
                      "typeString": "contract IERC20"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4337:23:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1045_$_t_bool_$",
                    "typeString": "mapping(contract IERC20 => bool)"
                  },
                  "valueType": {
                    "id": 4815,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4355:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "17caf6f1",
                "id": 4820,
                "mutability": "mutable",
                "name": "totalAllocPoint",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7400,
                "src": "4474:34:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4818,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4474:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 4819,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "4507:1:15",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                },
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4828,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4827,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4822,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4828,
                      "src": "4529:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4821,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4529:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4824,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4828,
                      "src": "4551:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4823,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4551:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4826,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4828,
                      "src": "4572:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4825,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4572:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4528:59:15"
                },
                "src": "4515:73:15"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4836,
                "name": "Withdraw",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4835,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4830,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4836,
                      "src": "4608:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4829,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4608:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4832,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4836,
                      "src": "4630:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4831,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4630:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4834,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4836,
                      "src": "4651:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4833,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4651:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4607:59:15"
                },
                "src": "4593:74:15"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4844,
                "name": "EmergencyWithdraw",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4843,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4838,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4844,
                      "src": "4705:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4837,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4705:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4840,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4844,
                      "src": "4735:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4839,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4735:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4842,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4844,
                      "src": "4764:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4841,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4764:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4695:89:15"
                },
                "src": "4672:113:15"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4854,
                "name": "SendGovernanceTokenReward",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4853,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4846,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4854,
                      "src": "4831:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4845,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4831:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4848,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4854,
                      "src": "4861:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4847,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4861:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4850,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4854,
                      "src": "4890:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4849,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4890:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4852,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "lockAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4854,
                      "src": "4914:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4851,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4914:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4821:117:15"
                },
                "src": "4790:149:15"
              },
              {
                "body": {
                  "id": 4868,
                  "nodeType": "Block",
                  "src": "4985:113:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 4863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4859,
                                "name": "poolExistence",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4817,
                                "src": "5003:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1045_$_t_bool_$",
                                  "typeString": "mapping(contract IERC20 => bool)"
                                }
                              },
                              "id": 4861,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4860,
                                "name": "_lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4856,
                                "src": "5017:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5003:23:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 4862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5030:5:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "src": "5003:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6173746572427265656465723a3a6e6f6e4475706c6963617465643a206475706c696361746564",
                            "id": 4864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5037:42:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1753e6f885fe1cb1deb06ae3d52afcd94de690b22b217e5d71a71b7a3ab9ca7",
                              "typeString": "literal_string \"MasterBreeder::nonDuplicated: duplicated\""
                            },
                            "value": "MasterBreeder::nonDuplicated: duplicated"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a1753e6f885fe1cb1deb06ae3d52afcd94de690b22b217e5d71a71b7a3ab9ca7",
                              "typeString": "literal_string \"MasterBreeder::nonDuplicated: duplicated\""
                            }
                          ],
                          "id": 4858,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4995:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4995:85:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4866,
                      "nodeType": "ExpressionStatement",
                      "src": "4995:85:15"
                    },
                    {
                      "id": 4867,
                      "nodeType": "PlaceholderStatement",
                      "src": "5090:1:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 4869,
                "name": "nonDuplicated",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4857,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4856,
                      "mutability": "mutable",
                      "name": "_lpToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4869,
                      "src": "4968:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4855,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "4968:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4967:17:15"
                },
                "src": "4945:153:15",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5022,
                  "nodeType": "Block",
                  "src": "5654:940:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4907,
                          "name": "govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4748,
                          "src": "5664:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                            "typeString": "contract GovernanceToken"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4908,
                          "name": "_govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4871,
                          "src": "5675:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                            "typeString": "contract GovernanceToken"
                          }
                        },
                        "src": "5664:20:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                          "typeString": "contract GovernanceToken"
                        }
                      },
                      "id": 4910,
                      "nodeType": "ExpressionStatement",
                      "src": "5664:20:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4911,
                          "name": "devaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4752,
                          "src": "5694:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4912,
                          "name": "_devaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4873,
                          "src": "5704:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5694:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4914,
                      "nodeType": "ExpressionStatement",
                      "src": "5694:18:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4915,
                          "name": "liquidityaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4754,
                          "src": "5722:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4916,
                          "name": "_liquidityaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4875,
                          "src": "5738:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5722:30:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4918,
                      "nodeType": "ExpressionStatement",
                      "src": "5722:30:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4919,
                          "name": "comfundaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4756,
                          "src": "5762:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4920,
                          "name": "_comfundaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4877,
                          "src": "5776:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5762:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4922,
                      "nodeType": "ExpressionStatement",
                      "src": "5762:26:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4923,
                          "name": "founderaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4758,
                          "src": "5798:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4924,
                          "name": "_founderaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4879,
                          "src": "5812:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5798:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4926,
                      "nodeType": "ExpressionStatement",
                      "src": "5798:26:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4927,
                          "name": "REWARD_PER_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4760,
                          "src": "5834:16:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4928,
                          "name": "_rewardPerBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4881,
                          "src": "5853:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5834:34:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4930,
                      "nodeType": "ExpressionStatement",
                      "src": "5834:34:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4931,
                          "name": "START_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4786,
                          "src": "5878:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4932,
                          "name": "_startBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4883,
                          "src": "5892:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5878:25:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4934,
                      "nodeType": "ExpressionStatement",
                      "src": "5878:25:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4935,
                          "name": "userDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4782,
                          "src": "5913:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4936,
                          "name": "_userDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4887,
                          "src": "5926:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5913:24:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4938,
                      "nodeType": "ExpressionStatement",
                      "src": "5913:24:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4939,
                          "name": "devDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4784,
                          "src": "5947:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4940,
                          "name": "_devDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4889,
                          "src": "5959:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5947:22:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4942,
                      "nodeType": "ExpressionStatement",
                      "src": "5947:22:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4943,
                          "name": "REWARD_MULTIPLIER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4763,
                          "src": "5979:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4944,
                          "name": "_rewardMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4892,
                          "src": "5999:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "5979:37:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 4946,
                      "nodeType": "ExpressionStatement",
                      "src": "5979:37:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4947,
                          "name": "blockDeltaStartStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4769,
                          "src": "6026:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4948,
                          "name": "_blockDeltaStartStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4895,
                          "src": "6049:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "6026:44:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 4950,
                      "nodeType": "ExpressionStatement",
                      "src": "6026:44:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4951,
                          "name": "blockDeltaEndStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4772,
                          "src": "6080:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4952,
                          "name": "_blockDeltaEndStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4898,
                          "src": "6101:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "6080:40:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 4954,
                      "nodeType": "ExpressionStatement",
                      "src": "6080:40:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4955,
                          "name": "userFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4775,
                          "src": "6130:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4956,
                          "name": "_userFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4901,
                          "src": "6145:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "6130:28:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 4958,
                      "nodeType": "ExpressionStatement",
                      "src": "6130:28:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4959,
                          "name": "devFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4778,
                          "src": "6168:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 4960,
                          "name": "_devFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4904,
                          "src": "6182:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "6168:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 4962,
                      "nodeType": "ExpressionStatement",
                      "src": "6168:26:15"
                    },
                    {
                      "body": {
                        "id": 4997,
                        "nodeType": "Block",
                        "src": "6263:152:15",
                        "statements": [
                          {
                            "assignments": [
                              4977
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4977,
                                "mutability": "mutable",
                                "name": "halvingAtBlock",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4997,
                                "src": "6277:22:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4976,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6277:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4990,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6351:1:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4985,
                                      "name": "_startBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4883,
                                      "src": "6334:11:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4982,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 4980,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4964,
                                            "src": "6325:1:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 4981,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6327:1:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "6325:3:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4978,
                                          "name": "_halvingAfterBlock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4885,
                                          "src": "6302:18:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "6302:22:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 4983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6302:27:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 291,
                                    "src": "6302:31:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4986,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6302:44:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 291,
                                "src": "6302:48:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6302:51:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6277:76:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4994,
                                  "name": "halvingAtBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4977,
                                  "src": "6389:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4991,
                                  "name": "HALVING_AT_BLOCK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4766,
                                  "src": "6367:16:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                    "typeString": "uint256[] storage ref"
                                  }
                                },
                                "id": 4993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "push",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6367:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256)"
                                }
                              },
                              "id": 4995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6367:37:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4996,
                            "nodeType": "ExpressionStatement",
                            "src": "6367:37:15"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4967,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4964,
                          "src": "6224:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4968,
                              "name": "REWARD_MULTIPLIER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4763,
                              "src": "6228:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 4969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6228:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6255:1:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6228:28:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6224:32:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4998,
                      "initializationExpression": {
                        "assignments": [
                          4964
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4964,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4998,
                            "src": "6209:9:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4963,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6209:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4966,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6221:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6209:13:15"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "6258:3:15",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4973,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4964,
                            "src": "6258:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4975,
                        "nodeType": "ExpressionStatement",
                        "src": "6258:3:15"
                      },
                      "nodeType": "ForStatement",
                      "src": "6204:211:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4999,
                          "name": "FINISH_BONUS_AT_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4780,
                          "src": "6424:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5008,
                              "name": "_startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4883,
                              "src": "6531:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5002,
                                      "name": "REWARD_MULTIPLIER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4763,
                                      "src": "6484:17:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 5003,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6484:24:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 5004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6511:1:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6484:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5000,
                                  "name": "_halvingAfterBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4885,
                                  "src": "6448:18:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 347,
                                "src": "6448:35:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6448:65:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "6448:82:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6448:95:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6424:119:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5011,
                      "nodeType": "ExpressionStatement",
                      "src": "6424:119:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "6583:2:15",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6584:1:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 5016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6575:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5015,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6575:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6575:11:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5012,
                            "name": "HALVING_AT_BLOCK",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4766,
                            "src": "6553:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 5014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6553:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 5020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6553:34:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5021,
                      "nodeType": "ExpressionStatement",
                      "src": "6553:34:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 5023,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4905,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4871,
                      "mutability": "mutable",
                      "name": "_govToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5125:25:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                        "typeString": "contract GovernanceToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4870,
                        "name": "GovernanceToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3987,
                        "src": "5125:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                          "typeString": "contract GovernanceToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4873,
                      "mutability": "mutable",
                      "name": "_devaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5160:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4872,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5160:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4875,
                      "mutability": "mutable",
                      "name": "_liquidityaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5186:22:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4874,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5186:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4877,
                      "mutability": "mutable",
                      "name": "_comfundaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5218:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4876,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5218:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4879,
                      "mutability": "mutable",
                      "name": "_founderaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5248:20:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4878,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5248:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4881,
                      "mutability": "mutable",
                      "name": "_rewardPerBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5278:23:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4880,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5278:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4883,
                      "mutability": "mutable",
                      "name": "_startBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5311:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4882,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5311:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4885,
                      "mutability": "mutable",
                      "name": "_halvingAfterBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5340:26:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4884,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5340:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4887,
                      "mutability": "mutable",
                      "name": "_userDepFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5376:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4886,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5376:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4889,
                      "mutability": "mutable",
                      "name": "_devDepFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5405:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4888,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5405:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4892,
                      "mutability": "mutable",
                      "name": "_rewardMultiplier",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5433:34:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4890,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5433:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4891,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5433:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4895,
                      "mutability": "mutable",
                      "name": "_blockDeltaStartStage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5477:38:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4893,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5477:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4894,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5477:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4898,
                      "mutability": "mutable",
                      "name": "_blockDeltaEndStage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5525:36:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5525:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4897,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5525:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4901,
                      "mutability": "mutable",
                      "name": "_userFeeStage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5571:30:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5571:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4900,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5571:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4904,
                      "mutability": "mutable",
                      "name": "_devFeeStage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5023,
                      "src": "5611:29:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5611:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4903,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5611:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5115:531:15"
                },
                "returnParameters": {
                  "id": 4906,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5654:0:15"
                },
                "scope": 7400,
                "src": "5104:1490:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5031,
                  "nodeType": "Block",
                  "src": "6654:39:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5028,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "6671:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 5029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6671:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5027,
                      "id": 5030,
                      "nodeType": "Return",
                      "src": "6664:22:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "081e3eda",
                "id": 5032,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "poolLength",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5024,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "6619:2:15"
                },
                "returnParameters": {
                  "id": 5027,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5026,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5032,
                      "src": "6645:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5025,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6645:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6644:9:15"
                },
                "scope": 7400,
                "src": "6600:93:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5111,
                  "nodeType": "Block",
                  "src": "6905:702:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5047,
                                "name": "poolId1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4803,
                                "src": "6936:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 5052,
                              "indexExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5050,
                                    "name": "_lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5036,
                                    "src": "6952:8:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  ],
                                  "id": 5049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6944:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5048,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6944:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6944:17:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6936:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6966:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6936:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6173746572427265656465723a3a6164643a206c7020697320616c726561647920696e20706f6f6c",
                            "id": 5055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6981:43:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3cc6d70b31d7de8180666a83fc8551865a0899c096d87de9d38aa01dfcdeaabb",
                              "typeString": "literal_string \"MasterBreeder::add: lp is already in pool\""
                            },
                            "value": "MasterBreeder::add: lp is already in pool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3cc6d70b31d7de8180666a83fc8551865a0899c096d87de9d38aa01dfcdeaabb",
                              "typeString": "literal_string \"MasterBreeder::add: lp is already in pool\""
                            }
                          ],
                          "id": 5046,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6915:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6915:119:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5057,
                      "nodeType": "ExpressionStatement",
                      "src": "6915:119:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 5058,
                        "name": "_withUpdate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5038,
                        "src": "7048:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5063,
                      "nodeType": "IfStatement",
                      "src": "7044:59:15",
                      "trueBody": {
                        "id": 5062,
                        "nodeType": "Block",
                        "src": "7061:42:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5059,
                                "name": "massUpdatePools",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "7075:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                  "typeString": "function ()"
                                }
                              },
                              "id": 5060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7075:17:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5061,
                            "nodeType": "ExpressionStatement",
                            "src": "7075:17:15"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        5065
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5065,
                          "mutability": "mutable",
                          "name": "lastRewardBlock",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5111,
                          "src": "7112:23:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5064,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7112:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5074,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5066,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "7150:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7150:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5068,
                            "name": "START_BLOCK",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4786,
                            "src": "7165:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7150:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 5072,
                          "name": "START_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4786,
                          "src": "7194:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "7150:55:15",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5070,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "7179:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7179:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7112:93:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5080,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5075,
                          "name": "totalAllocPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4820,
                          "src": "7215:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5078,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5034,
                              "src": "7253:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5076,
                              "name": "totalAllocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4820,
                              "src": "7233:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "7233:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7233:32:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7215:50:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5081,
                      "nodeType": "ExpressionStatement",
                      "src": "7215:50:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5082,
                            "name": "poolId1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4803,
                            "src": "7275:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5087,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5085,
                                "name": "_lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5036,
                                "src": "7291:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 5084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7283:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5083,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7283:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7283:17:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7275:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5088,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4799,
                              "src": "7304:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                                "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 5089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7304:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7322:1:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "7304:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7275:48:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5093,
                      "nodeType": "ExpressionStatement",
                      "src": "7275:48:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5094,
                            "name": "poolExistence",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4817,
                            "src": "7333:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1045_$_t_bool_$",
                              "typeString": "mapping(contract IERC20 => bool)"
                            }
                          },
                          "id": 5096,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5095,
                            "name": "_lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5036,
                            "src": "7347:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7333:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7359:4:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "7333:30:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5099,
                      "nodeType": "ExpressionStatement",
                      "src": "7333:30:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5104,
                                "name": "_lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5036,
                                "src": "7436:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5105,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5034,
                                "src": "7474:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5106,
                                "name": "lastRewardBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5065,
                                "src": "7520:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7574:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5103,
                              "name": "PoolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4746,
                              "src": "7400:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PoolInfo_$4746_storage_ptr_$",
                                "typeString": "type(struct MasterBreeder.PoolInfo storage pointer)"
                              }
                            },
                            "id": 5108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "lpToken",
                              "allocPoint",
                              "lastRewardBlock",
                              "accGovTokenPerShare"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "7400:190:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_memory_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_memory_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5100,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4799,
                            "src": "7373:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                              "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 5102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7373:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$4746_storage_$returns$__$",
                            "typeString": "function (struct MasterBreeder.PoolInfo storage ref)"
                          }
                        },
                        "id": 5109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7373:227:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5110,
                      "nodeType": "ExpressionStatement",
                      "src": "7373:227:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "1eaaa045",
                "id": 5112,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 5041,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5040,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "6871:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "6871:9:15"
                  },
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5043,
                        "name": "_lpToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5036,
                        "src": "6895:8:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      }
                    ],
                    "id": 5044,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5042,
                      "name": "nonDuplicated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4869,
                      "src": "6881:13:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_contract$_IERC20_$1045_$",
                        "typeString": "modifier (contract IERC20)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "6881:23:15"
                  }
                ],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5039,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5034,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5112,
                      "src": "6787:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5033,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6787:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5036,
                      "mutability": "mutable",
                      "name": "_lpToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5112,
                      "src": "6816:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5035,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "6816:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5038,
                      "mutability": "mutable",
                      "name": "_withUpdate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5112,
                      "src": "6841:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5037,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6841:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6777:86:15"
                },
                "returnParameters": {
                  "id": 5045,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "6905:0:15"
                },
                "scope": 7400,
                "src": "6765:842:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5149,
                  "nodeType": "Block",
                  "src": "7824:237:15",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 5123,
                        "name": "_withUpdate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5118,
                        "src": "7838:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5128,
                      "nodeType": "IfStatement",
                      "src": "7834:59:15",
                      "trueBody": {
                        "id": 5127,
                        "nodeType": "Block",
                        "src": "7851:42:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5124,
                                "name": "massUpdatePools",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "7865:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                  "typeString": "function ()"
                                }
                              },
                              "id": 5125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7865:17:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5126,
                            "nodeType": "ExpressionStatement",
                            "src": "7865:17:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5129,
                          "name": "totalAllocPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4820,
                          "src": "7902:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5138,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5116,
                              "src": "7984:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5132,
                                      "name": "poolInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4799,
                                      "src": "7940:8:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                                        "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                                      }
                                    },
                                    "id": 5134,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 5133,
                                      "name": "_pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5114,
                                      "src": "7949:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7940:14:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                                      "typeString": "struct MasterBreeder.PoolInfo storage ref"
                                    }
                                  },
                                  "id": 5135,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allocPoint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4741,
                                  "src": "7940:25:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5130,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4820,
                                  "src": "7920:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 313,
                                "src": "7920:19:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7920:46:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "7920:50:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7920:85:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7902:103:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5141,
                      "nodeType": "ExpressionStatement",
                      "src": "7902:103:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5142,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4799,
                              "src": "8015:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                                "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 5144,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5143,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5114,
                              "src": "8024:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8015:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                              "typeString": "struct MasterBreeder.PoolInfo storage ref"
                            }
                          },
                          "id": 5145,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "allocPoint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4741,
                          "src": "8015:25:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5146,
                          "name": "_allocPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5116,
                          "src": "8043:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8015:39:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5148,
                      "nodeType": "ExpressionStatement",
                      "src": "8015:39:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "64482f79",
                "id": 5150,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 5121,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5120,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "7814:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7814:9:15"
                  }
                ],
                "name": "set",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5119,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5114,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5150,
                      "src": "7733:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5113,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7733:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5116,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5150,
                      "src": "7755:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5115,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7755:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5118,
                      "mutability": "mutable",
                      "name": "_withUpdate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5150,
                      "src": "7784:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5117,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7784:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7723:83:15"
                },
                "returnParameters": {
                  "id": 5122,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7824:0:15"
                },
                "scope": 7400,
                "src": "7711:350:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5174,
                  "nodeType": "Block",
                  "src": "8175:141:15",
                  "statements": [
                    {
                      "assignments": [
                        5154
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5154,
                          "mutability": "mutable",
                          "name": "length",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5174,
                          "src": "8185:14:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5153,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8185:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5157,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5155,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "8202:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 5156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8202:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8185:32:15"
                    },
                    {
                      "body": {
                        "id": 5172,
                        "nodeType": "Block",
                        "src": "8270:40:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5169,
                                  "name": "pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5159,
                                  "src": "8295:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5168,
                                "name": "updatePool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5422,
                                "src": "8284:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256)"
                                }
                              },
                              "id": 5170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8284:15:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5171,
                            "nodeType": "ExpressionStatement",
                            "src": "8284:15:15"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5162,
                          "name": "pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5159,
                          "src": "8249:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5163,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5154,
                          "src": "8255:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8249:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5173,
                      "initializationExpression": {
                        "assignments": [
                          5159
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5159,
                            "mutability": "mutable",
                            "name": "pid",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5173,
                            "src": "8232:11:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5158,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8232:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5161,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8246:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8232:15:15"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "8263:5:15",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5165,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5159,
                            "src": "8265:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5167,
                        "nodeType": "ExpressionStatement",
                        "src": "8263:5:15"
                      },
                      "nodeType": "ForStatement",
                      "src": "8227:83:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "630b5ba1",
                "id": 5175,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "massUpdatePools",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5151,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8165:2:15"
                },
                "returnParameters": {
                  "id": 5152,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8175:0:15"
                },
                "scope": 7400,
                "src": "8141:175:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5421,
                  "nodeType": "Block",
                  "src": "8430:2582:15",
                  "statements": [
                    {
                      "assignments": [
                        5181
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5181,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8440:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5180,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "8440:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5185,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5182,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "8464:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 5184,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5183,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5177,
                          "src": "8473:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8464:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8440:38:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5186,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "8492:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8492:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5188,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5181,
                            "src": "8508:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                            }
                          },
                          "id": 5189,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lastRewardBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4743,
                          "src": "8508:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8492:36:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5193,
                      "nodeType": "IfStatement",
                      "src": "8488:73:15",
                      "trueBody": {
                        "id": 5192,
                        "nodeType": "Block",
                        "src": "8530:31:15",
                        "statements": [
                          {
                            "expression": null,
                            "functionReturnParameters": 5179,
                            "id": 5191,
                            "nodeType": "Return",
                            "src": "8544:7:15"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        5195
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5195,
                          "mutability": "mutable",
                          "name": "lpSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8570:16:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5194,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8570:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5204,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5201,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8620:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              ],
                              "id": 5200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8612:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5199,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8612:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8612:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5196,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5181,
                              "src": "8589:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 5197,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lpToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4739,
                            "src": "8589:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 5198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "8589:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 5203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8589:37:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8570:56:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5205,
                          "name": "lpSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5195,
                          "src": "8640:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8652:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8640:13:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5217,
                      "nodeType": "IfStatement",
                      "src": "8636:99:15",
                      "trueBody": {
                        "id": 5216,
                        "nodeType": "Block",
                        "src": "8655:80:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5208,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5181,
                                  "src": "8669:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                    "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                  }
                                },
                                "id": 5210,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4743,
                                "src": "8669:20:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5211,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "8692:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8692:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8669:35:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5214,
                            "nodeType": "ExpressionStatement",
                            "src": "8669:35:15"
                          },
                          {
                            "expression": null,
                            "functionReturnParameters": 5179,
                            "id": 5215,
                            "nodeType": "Return",
                            "src": "8718:7:15"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        5219
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5219,
                          "mutability": "mutable",
                          "name": "GovTokenForDev",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8744:22:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5218,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8744:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5220,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8744:22:15"
                    },
                    {
                      "assignments": [
                        5222
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5222,
                          "mutability": "mutable",
                          "name": "GovTokenForFarmer",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8776:25:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5221,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8776:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5223,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8776:25:15"
                    },
                    {
                      "assignments": [
                        5225
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5225,
                          "mutability": "mutable",
                          "name": "GovTokenForLP",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8811:21:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5224,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8811:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5226,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8811:21:15"
                    },
                    {
                      "assignments": [
                        5228
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5228,
                          "mutability": "mutable",
                          "name": "GovTokenForCom",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8842:22:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5227,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8842:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5229,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8842:22:15"
                    },
                    {
                      "assignments": [
                        5231
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5231,
                          "mutability": "mutable",
                          "name": "GovTokenForFounders",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5421,
                          "src": "8874:27:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5230,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8874:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5232,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8874:27:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 5233,
                              "name": "GovTokenForDev",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5219,
                              "src": "8925:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5234,
                              "name": "GovTokenForFarmer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5222,
                              "src": "8953:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5235,
                              "name": "GovTokenForLP",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5225,
                              "src": "8984:13:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5236,
                              "name": "GovTokenForCom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5228,
                              "src": "9011:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5237,
                              "name": "GovTokenForFounders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5231,
                              "src": "9039:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5238,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "8911:157:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5240,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "9085:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                  "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                }
                              },
                              "id": 5241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4743,
                              "src": "9085:20:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5242,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "9107:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9107:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5244,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "9121:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                  "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                }
                              },
                              "id": 5245,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allocPoint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4741,
                              "src": "9121:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5239,
                            "name": "getPoolReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5643,
                            "src": "9071:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) view returns (uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 5246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9071:66:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "src": "8911:226:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5248,
                      "nodeType": "ExpressionStatement",
                      "src": "8911:226:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5254,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "9169:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              ],
                              "id": 5253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9161:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5252,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9161:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9161:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5256,
                            "name": "GovTokenForFarmer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5222,
                            "src": "9176:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5249,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4748,
                            "src": "9147:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                              "typeString": "contract GovernanceToken"
                            }
                          },
                          "id": 5251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3017,
                          "src": "9147:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256) external"
                          }
                        },
                        "id": 5257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9147:47:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5258,
                      "nodeType": "ExpressionStatement",
                      "src": "9147:47:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5259,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5181,
                            "src": "9204:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                            }
                          },
                          "id": 5261,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "accGovTokenPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4745,
                          "src": "9204:24:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5270,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5195,
                                  "src": "9305:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31653132",
                                      "id": 5267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9295:4:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000_by_1",
                                        "typeString": "int_const 1000000000000"
                                      },
                                      "value": "1e12"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000_by_1",
                                        "typeString": "int_const 1000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5265,
                                      "name": "GovTokenForFarmer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5222,
                                      "src": "9273:17:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "9273:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 5268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9273:27:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 369,
                                "src": "9273:31:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9273:41:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5262,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "9231:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                  "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                }
                              },
                              "id": 5263,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "accGovTokenPerShare",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "9231:24:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "9231:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9231:93:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9204:120:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5274,
                      "nodeType": "ExpressionStatement",
                      "src": "9204:120:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5275,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5181,
                            "src": "9334:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                            }
                          },
                          "id": 5277,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "lastRewardBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4743,
                          "src": "9334:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5278,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "9357:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9357:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9334:35:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5281,
                      "nodeType": "ExpressionStatement",
                      "src": "9334:35:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5282,
                          "name": "GovTokenForDev",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5219,
                          "src": "9383:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9400:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9383:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5318,
                      "nodeType": "IfStatement",
                      "src": "9379:389:15",
                      "trueBody": {
                        "id": 5317,
                        "nodeType": "Block",
                        "src": "9403:365:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5290,
                                      "name": "devaddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4752,
                                      "src": "9439:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5289,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9431:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5288,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9431:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9431:16:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5292,
                                  "name": "GovTokenForDev",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5219,
                                  "src": "9449:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5285,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "9417:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                },
                                "id": 5287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3017,
                                "src": "9417:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 5293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9417:47:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5294,
                            "nodeType": "ExpressionStatement",
                            "src": "9417:47:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5295,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9622:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9622:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5297,
                                "name": "FINISH_BONUS_AT_BLOCK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4780,
                                "src": "9638:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9622:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5316,
                            "nodeType": "IfStatement",
                            "src": "9618:140:15",
                            "trueBody": {
                              "id": 5315,
                              "nodeType": "Block",
                              "src": "9661:97:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5304,
                                            "name": "devaddr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4752,
                                            "src": "9701:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 5303,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9693:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5302,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9693:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 5305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9693:16:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 5311,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9738:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "3735",
                                                "id": 5308,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9730:2:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_75_by_1",
                                                  "typeString": "int_const 75"
                                                },
                                                "value": "75"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_75_by_1",
                                                  "typeString": "int_const 75"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5306,
                                                "name": "GovTokenForDev",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5219,
                                                "src": "9711:14:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5307,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "9711:18:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5309,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9711:22:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "9711:26:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5312,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9711:31:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5299,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "9679:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      },
                                      "id": 5301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3175,
                                      "src": "9679:13:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256) external"
                                      }
                                    },
                                    "id": 5313,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9679:64:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5314,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9679:64:15"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5319,
                          "name": "GovTokenForLP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5225,
                          "src": "9781:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9797:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9781:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5352,
                      "nodeType": "IfStatement",
                      "src": "9777:453:15",
                      "trueBody": {
                        "id": 5351,
                        "nodeType": "Block",
                        "src": "9800:430:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5325,
                                  "name": "liquidityaddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4754,
                                  "src": "9828:13:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5326,
                                  "name": "GovTokenForLP",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5225,
                                  "src": "9843:13:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5322,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "9814:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                },
                                "id": 5324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3017,
                                "src": "9814:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 5327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9814:43:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5328,
                            "nodeType": "ExpressionStatement",
                            "src": "9814:43:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5329,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10079:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10079:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5331,
                                "name": "FINISH_BONUS_AT_BLOCK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4780,
                                "src": "10095:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10079:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5350,
                            "nodeType": "IfStatement",
                            "src": "10075:145:15",
                            "trueBody": {
                              "id": 5349,
                              "nodeType": "Block",
                              "src": "10118:102:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5338,
                                            "name": "liquidityaddr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4754,
                                            "src": "10158:13:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 5337,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10150:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5336,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10150:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 5339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10150:22:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 5345,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10200:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "3435",
                                                "id": 5342,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10192:2:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_45_by_1",
                                                  "typeString": "int_const 45"
                                                },
                                                "value": "45"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_45_by_1",
                                                  "typeString": "int_const 45"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5340,
                                                "name": "GovTokenForLP",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5225,
                                                "src": "10174:13:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5341,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "10174:17:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5343,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10174:21:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5344,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "10174:25:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5346,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10174:30:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5333,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "10136:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      },
                                      "id": 5335,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3175,
                                      "src": "10136:13:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256) external"
                                      }
                                    },
                                    "id": 5347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10136:69:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5348,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10136:69:15"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5353,
                          "name": "GovTokenForCom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5228,
                          "src": "10243:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10260:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10243:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5386,
                      "nodeType": "IfStatement",
                      "src": "10239:354:15",
                      "trueBody": {
                        "id": 5385,
                        "nodeType": "Block",
                        "src": "10263:330:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5359,
                                  "name": "comfundaddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4756,
                                  "src": "10291:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5360,
                                  "name": "GovTokenForCom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5228,
                                  "src": "10304:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5356,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "10277:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                },
                                "id": 5358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3017,
                                "src": "10277:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 5361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10277:42:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5362,
                            "nodeType": "ExpressionStatement",
                            "src": "10277:42:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5363,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10443:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10443:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5365,
                                "name": "FINISH_BONUS_AT_BLOCK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4780,
                                "src": "10459:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10443:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5384,
                            "nodeType": "IfStatement",
                            "src": "10439:144:15",
                            "trueBody": {
                              "id": 5383,
                              "nodeType": "Block",
                              "src": "10482:101:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5372,
                                            "name": "comfundaddr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4756,
                                            "src": "10522:11:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 5371,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10514:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5370,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10514:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 5373,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10514:20:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 5379,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10563:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "3835",
                                                "id": 5376,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10555:2:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_85_by_1",
                                                  "typeString": "int_const 85"
                                                },
                                                "value": "85"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_85_by_1",
                                                  "typeString": "int_const 85"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5374,
                                                "name": "GovTokenForCom",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5228,
                                                "src": "10536:14:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5375,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "10536:18:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5377,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10536:22:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5378,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "10536:26:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10536:31:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5367,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "10500:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      },
                                      "id": 5369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3175,
                                      "src": "10500:13:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256) external"
                                      }
                                    },
                                    "id": 5381,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10500:68:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5382,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10500:68:15"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5387,
                          "name": "GovTokenForFounders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5231,
                          "src": "10606:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10628:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10606:23:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5420,
                      "nodeType": "IfStatement",
                      "src": "10602:404:15",
                      "trueBody": {
                        "id": 5419,
                        "nodeType": "Block",
                        "src": "10631:375:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5393,
                                  "name": "founderaddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4758,
                                  "src": "10659:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5394,
                                  "name": "GovTokenForFounders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5231,
                                  "src": "10672:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5390,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "10645:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                },
                                "id": 5392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3017,
                                "src": "10645:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 5395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10645:47:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5396,
                            "nodeType": "ExpressionStatement",
                            "src": "10645:47:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5397,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10851:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10851:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5399,
                                "name": "FINISH_BONUS_AT_BLOCK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4780,
                                "src": "10867:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10851:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5418,
                            "nodeType": "IfStatement",
                            "src": "10847:149:15",
                            "trueBody": {
                              "id": 5417,
                              "nodeType": "Block",
                              "src": "10890:106:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5406,
                                            "name": "founderaddr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4758,
                                            "src": "10930:11:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 5405,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10922:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5404,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10922:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 5407,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10922:20:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 5413,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10976:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "3935",
                                                "id": 5410,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10968:2:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_95_by_1",
                                                  "typeString": "int_const 95"
                                                },
                                                "value": "95"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_95_by_1",
                                                  "typeString": "int_const 95"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5408,
                                                "name": "GovTokenForFounders",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5231,
                                                "src": "10944:19:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5409,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "10944:23:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5411,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10944:27:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5412,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "10944:31:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5414,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10944:36:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5401,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "10908:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      },
                                      "id": 5403,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3175,
                                      "src": "10908:13:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256) external"
                                      }
                                    },
                                    "id": 5415,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10908:73:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5416,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10908:73:15"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "51eb05a6",
                "id": 5422,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "updatePool",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5177,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5422,
                      "src": "8409:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5176,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8409:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8408:14:15"
                },
                "returnParameters": {
                  "id": 5179,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8430:0:15"
                },
                "scope": 7400,
                "src": "8389:2623:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5521,
                  "nodeType": "Block",
                  "src": "11288:645:15",
                  "statements": [
                    {
                      "assignments": [
                        5432
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5432,
                          "mutability": "mutable",
                          "name": "result",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5521,
                          "src": "11298:14:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5431,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11298:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5434,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11315:1:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11298:18:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5435,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5424,
                          "src": "11330:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5436,
                          "name": "START_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4786,
                          "src": "11338:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11330:19:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5440,
                      "nodeType": "IfStatement",
                      "src": "11326:33:15",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11358:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 5430,
                        "id": 5439,
                        "nodeType": "Return",
                        "src": "11351:8:15"
                      }
                    },
                    {
                      "body": {
                        "id": 5517,
                        "nodeType": "Block",
                        "src": "11424:479:15",
                        "statements": [
                          {
                            "assignments": [
                              5453
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5453,
                                "mutability": "mutable",
                                "name": "endBlock",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5517,
                                "src": "11438:16:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5452,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11438:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5457,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5454,
                                "name": "HALVING_AT_BLOCK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4766,
                                "src": "11457:16:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 5456,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5455,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5442,
                                "src": "11474:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11457:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11438:38:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5458,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5442,
                                "src": "11494:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5459,
                                    "name": "REWARD_MULTIPLIER",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4763,
                                    "src": "11498:17:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 5460,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11498:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11523:1:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "11498:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11494:30:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5466,
                            "nodeType": "IfStatement",
                            "src": "11490:44:15",
                            "trueBody": {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11533:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 5430,
                              "id": 5465,
                              "nodeType": "Return",
                              "src": "11526:8:15"
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5467,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5426,
                                "src": "11553:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5468,
                                "name": "endBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5453,
                                "src": "11560:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11553:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5488,
                            "nodeType": "IfStatement",
                            "src": "11549:144:15",
                            "trueBody": {
                              "id": 5487,
                              "nodeType": "Block",
                              "src": "11570:123:15",
                              "statements": [
                                {
                                  "assignments": [
                                    5471
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5471,
                                      "mutability": "mutable",
                                      "name": "m",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 5487,
                                      "src": "11588:9:15",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5470,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11588:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5481,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5477,
                                          "name": "REWARD_MULTIPLIER",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4763,
                                          "src": "11619:17:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 5479,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5478,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5442,
                                          "src": "11637:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "11619:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5474,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5424,
                                            "src": "11608:5:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5472,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5426,
                                            "src": "11600:3:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5473,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 313,
                                          "src": "11600:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11600:14:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5476,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "11600:18:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11600:40:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11588:52:15"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5484,
                                        "name": "m",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5471,
                                        "src": "11676:1:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5482,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5432,
                                        "src": "11665:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5483,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 291,
                                      "src": "11665:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11665:13:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 5430,
                                  "id": 5486,
                                  "nodeType": "Return",
                                  "src": "11658:20:15"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5489,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5424,
                                "src": "11711:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5490,
                                "name": "endBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5453,
                                "src": "11719:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11711:16:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5516,
                            "nodeType": "IfStatement",
                            "src": "11707:186:15",
                            "trueBody": {
                              "id": 5515,
                              "nodeType": "Block",
                              "src": "11729:164:15",
                              "statements": [
                                {
                                  "assignments": [
                                    5493
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5493,
                                      "mutability": "mutable",
                                      "name": "m",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 5515,
                                      "src": "11747:9:15",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5492,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11747:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5503,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5499,
                                          "name": "REWARD_MULTIPLIER",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4763,
                                          "src": "11783:17:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 5501,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5500,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5442,
                                          "src": "11801:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "11783:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5496,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5424,
                                            "src": "11772:5:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5494,
                                            "name": "endBlock",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5453,
                                            "src": "11759:8:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5495,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 313,
                                          "src": "11759:12:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5497,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11759:19:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5498,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "11759:23:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5502,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11759:45:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11747:57:15"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5504,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5424,
                                      "src": "11822:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 5505,
                                      "name": "endBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5453,
                                      "src": "11830:8:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11822:16:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5507,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11822:16:15"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5508,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5432,
                                      "src": "11856:6:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 5511,
                                          "name": "m",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5493,
                                          "src": "11876:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5509,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5432,
                                          "src": "11865:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5510,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 291,
                                        "src": "11865:10:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 5512,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11865:13:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11856:22:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5514,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11856:22:15"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5445,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5442,
                          "src": "11390:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5446,
                            "name": "HALVING_AT_BLOCK",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4766,
                            "src": "11394:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 5447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11394:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11390:27:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5518,
                      "initializationExpression": {
                        "assignments": [
                          5442
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5442,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5518,
                            "src": "11375:9:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5441,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11375:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5444,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11387:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11375:13:15"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "11419:3:15",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5449,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5442,
                            "src": "11419:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5451,
                        "nodeType": "ExpressionStatement",
                        "src": "11419:3:15"
                      },
                      "nodeType": "ForStatement",
                      "src": "11370:533:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5519,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5432,
                        "src": "11920:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5430,
                      "id": 5520,
                      "nodeType": "Return",
                      "src": "11913:13:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8dbb1e3a",
                "id": 5522,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getMultiplier",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5427,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5424,
                      "mutability": "mutable",
                      "name": "_from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "11202:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11202:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5426,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "11217:11:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5425,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11217:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11201:28:15"
                },
                "returnParameters": {
                  "id": 5430,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5429,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "11275:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5428,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11275:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11274:9:15"
                },
                "scope": 7400,
                "src": "11179:754:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5642,
                  "nodeType": "Block",
                  "src": "12247:786:15",
                  "statements": [
                    {
                      "assignments": [
                        5542
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5542,
                          "mutability": "mutable",
                          "name": "multiplier",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5642,
                          "src": "12257:18:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5541,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "12257:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5547,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5544,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5524,
                            "src": "12292:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5545,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5526,
                            "src": "12299:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5543,
                          "name": "getMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5522,
                          "src": "12278:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) view returns (uint256)"
                          }
                        },
                        "id": 5546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12278:25:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12257:46:15"
                    },
                    {
                      "assignments": [
                        5549
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5549,
                          "mutability": "mutable",
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5642,
                          "src": "12313:14:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5548,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "12313:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5560,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5558,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4820,
                            "src": "12413:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5555,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5528,
                                "src": "12379:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5552,
                                    "name": "REWARD_PER_BLOCK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4760,
                                    "src": "12357:16:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5550,
                                    "name": "multiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5542,
                                    "src": "12342:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "12342:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12342:32:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "12342:36:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12342:49:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "12342:53:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12342:100:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12313:129:15"
                    },
                    {
                      "assignments": [
                        5562
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5562,
                          "mutability": "mutable",
                          "name": "GovernanceTokenCanMint",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5642,
                          "src": "12452:30:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5561,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "12452:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5571,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5567,
                                "name": "govToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4748,
                                "src": "12504:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              },
                              "id": 5568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 553,
                              "src": "12504:20:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 5569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12504:22:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5563,
                                "name": "govToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4748,
                                "src": "12485:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                  "typeString": "contract GovernanceToken"
                                }
                              },
                              "id": 5564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2847,
                              "src": "12485:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 5565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12485:14:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 313,
                          "src": "12485:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12485:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12452:75:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5572,
                          "name": "GovernanceTokenCanMint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5562,
                          "src": "12542:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5573,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5549,
                          "src": "12567:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12542:31:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 5640,
                        "nodeType": "Block",
                        "src": "12740:287:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5596,
                                "name": "forDev",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5531,
                                "src": "12754:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 5602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12795:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5599,
                                        "name": "PERCENT_FOR_DEV",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4790,
                                        "src": "12774:15:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5597,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5549,
                                        "src": "12763:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5598,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "12763:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12763:27:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "12763:31:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12763:36:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12754:45:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5605,
                            "nodeType": "ExpressionStatement",
                            "src": "12754:45:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5606,
                                "name": "forFarmer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5533,
                                "src": "12813:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 5607,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5549,
                                "src": "12825:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12813:18:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5609,
                            "nodeType": "ExpressionStatement",
                            "src": "12813:18:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5610,
                                "name": "forLP",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5535,
                                "src": "12845:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 5616,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12884:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5613,
                                        "name": "PERCENT_FOR_LP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4792,
                                        "src": "12864:14:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5611,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5549,
                                        "src": "12853:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5612,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "12853:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12853:26:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5615,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "12853:30:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12853:35:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12845:43:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5619,
                            "nodeType": "ExpressionStatement",
                            "src": "12845:43:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5620,
                                "name": "forCom",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5537,
                                "src": "12902:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 5626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12943:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5623,
                                        "name": "PERCENT_FOR_COM",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4794,
                                        "src": "12922:15:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5621,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5549,
                                        "src": "12911:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5622,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "12911:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5624,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12911:27:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "12911:31:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12911:36:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12902:45:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5629,
                            "nodeType": "ExpressionStatement",
                            "src": "12902:45:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5630,
                                "name": "forFounders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5539,
                                "src": "12961:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 5636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13012:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5633,
                                        "name": "PERCENT_FOR_FOUNDERS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4796,
                                        "src": "12986:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5631,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5549,
                                        "src": "12975:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5632,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "12975:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12975:32:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5635,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "12975:36:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12975:41:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12961:55:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5639,
                            "nodeType": "ExpressionStatement",
                            "src": "12961:55:15"
                          }
                        ]
                      },
                      "id": 5641,
                      "nodeType": "IfStatement",
                      "src": "12538:489:15",
                      "trueBody": {
                        "id": 5595,
                        "nodeType": "Block",
                        "src": "12575:159:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5575,
                                "name": "forDev",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5531,
                                "src": "12589:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12598:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12589:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5578,
                            "nodeType": "ExpressionStatement",
                            "src": "12589:10:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5579,
                                "name": "forFarmer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5533,
                                "src": "12613:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 5580,
                                "name": "GovernanceTokenCanMint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5562,
                                "src": "12625:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12613:34:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5582,
                            "nodeType": "ExpressionStatement",
                            "src": "12613:34:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5583,
                                "name": "forLP",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5535,
                                "src": "12661:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12669:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12661:9:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5586,
                            "nodeType": "ExpressionStatement",
                            "src": "12661:9:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5587,
                                "name": "forCom",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5537,
                                "src": "12684:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12693:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12684:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5590,
                            "nodeType": "ExpressionStatement",
                            "src": "12684:10:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5591,
                                "name": "forFounders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5539,
                                "src": "12708:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12722:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12708:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5594,
                            "nodeType": "ExpressionStatement",
                            "src": "12708:15:15"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c8ed7680",
                "id": 5643,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getPoolReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5529,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5524,
                      "mutability": "mutable",
                      "name": "_from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "11971:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5523,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11971:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5526,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "11994:11:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5525,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11994:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5528,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12015:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5527,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12015:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11961:79:15"
                },
                "returnParameters": {
                  "id": 5540,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5531,
                      "mutability": "mutable",
                      "name": "forDev",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12099:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5530,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12099:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5533,
                      "mutability": "mutable",
                      "name": "forFarmer",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12127:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5532,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12127:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5535,
                      "mutability": "mutable",
                      "name": "forLP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12158:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5534,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12158:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5537,
                      "mutability": "mutable",
                      "name": "forCom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12185:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12185:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5539,
                      "mutability": "mutable",
                      "name": "forFounders",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "12213:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5538,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12213:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12085:157:15"
                },
                "scope": 7400,
                "src": "11939:1094:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5734,
                  "nodeType": "Block",
                  "src": "13217:744:15",
                  "statements": [
                    {
                      "assignments": [
                        5653
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5653,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5734,
                          "src": "13227:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5652,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "13227:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5657,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5654,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "13251:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 5656,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5655,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5645,
                          "src": "13260:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13251:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13227:38:15"
                    },
                    {
                      "assignments": [
                        5659
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5659,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5734,
                          "src": "13275:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5658,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "13275:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5665,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5660,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "13299:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 5662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5661,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5645,
                            "src": "13308:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13299:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 5664,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5663,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5647,
                          "src": "13314:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13299:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13275:45:15"
                    },
                    {
                      "assignments": [
                        5667
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5667,
                          "mutability": "mutable",
                          "name": "accGovTokenPerShare",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5734,
                          "src": "13330:27:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5666,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13330:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5670,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5668,
                          "name": "pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5653,
                          "src": "13360:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                          }
                        },
                        "id": 5669,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "accGovTokenPerShare",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4745,
                        "src": "13360:24:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13330:54:15"
                    },
                    {
                      "assignments": [
                        5672
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5672,
                          "mutability": "mutable",
                          "name": "lpSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5734,
                          "src": "13394:16:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5671,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13394:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5681,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5678,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "13444:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              ],
                              "id": 5677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13436:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5676,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13436:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13436:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5673,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5653,
                              "src": "13413:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 5674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lpToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4739,
                            "src": "13413:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 5675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "13413:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 5680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13413:37:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13394:56:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5682,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "13464:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13464:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5684,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5653,
                              "src": "13479:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 5685,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4743,
                            "src": "13479:20:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13464:35:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5687,
                            "name": "lpSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5672,
                            "src": "13503:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13514:1:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13503:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13464:51:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5720,
                      "nodeType": "IfStatement",
                      "src": "13460:411:15",
                      "trueBody": {
                        "id": 5719,
                        "nodeType": "Block",
                        "src": "13517:354:15",
                        "statements": [
                          {
                            "assignments": [
                              5692
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5692,
                                "mutability": "mutable",
                                "name": "GovTokenForFarmer",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5719,
                                "src": "13531:25:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5691,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13531:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5693,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13531:25:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  null,
                                  {
                                    "argumentTypes": null,
                                    "id": 5694,
                                    "name": "GovTokenForFarmer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5692,
                                    "src": "13573:17:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  null,
                                  null,
                                  null
                                ],
                                "id": 5695,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "13570:27:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$_t_uint256_$__$__$__$",
                                  "typeString": "tuple(,uint256,,,)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5697,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5653,
                                      "src": "13631:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                        "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                      }
                                    },
                                    "id": 5698,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4743,
                                    "src": "13631:20:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5699,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "13669:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13669:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5701,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5653,
                                      "src": "13699:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                        "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                      }
                                    },
                                    "id": 5702,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4741,
                                    "src": "13699:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5696,
                                  "name": "getPoolReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5643,
                                  "src": "13600:13:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) view returns (uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 5703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13600:128:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                                }
                              },
                              "src": "13570:158:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5705,
                            "nodeType": "ExpressionStatement",
                            "src": "13570:158:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5706,
                                "name": "accGovTokenPerShare",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "13742:19:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5714,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5672,
                                        "src": "13837:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31653132",
                                            "id": 5711,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13827:4:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1000000000000_by_1",
                                              "typeString": "int_const 1000000000000"
                                            },
                                            "value": "1e12"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1000000000000_by_1",
                                              "typeString": "int_const 1000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5709,
                                            "name": "GovTokenForFarmer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5692,
                                            "src": "13805:17:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 5710,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 347,
                                          "src": "13805:21:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 5712,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13805:27:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 369,
                                      "src": "13805:31:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13805:41:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5707,
                                    "name": "accGovTokenPerShare",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5667,
                                    "src": "13764:19:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 291,
                                  "src": "13764:23:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13764:96:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13742:118:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5718,
                            "nodeType": "ExpressionStatement",
                            "src": "13742:118:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5730,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "13938:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                "typeString": "struct MasterBreeder.UserInfo storage pointer"
                              }
                            },
                            "id": 5731,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4715,
                            "src": "13938:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31653132",
                                "id": 5727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13928:4:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000_by_1",
                                  "typeString": "int_const 1000000000000"
                                },
                                "value": "1e12"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000000000000_by_1",
                                  "typeString": "int_const 1000000000000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5724,
                                    "name": "accGovTokenPerShare",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5667,
                                    "src": "13903:19:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5721,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5659,
                                      "src": "13887:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 5722,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4713,
                                    "src": "13887:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "13887:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13887:36:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 369,
                              "src": "13887:40:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13887:46:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 313,
                          "src": "13887:50:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13887:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5651,
                      "id": 5733,
                      "nodeType": "Return",
                      "src": "13880:74:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "98969e82",
                "id": 5735,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pendingReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5648,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5645,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5735,
                      "src": "13128:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5644,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13128:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5647,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5735,
                      "src": "13142:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5646,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13142:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13127:29:15"
                },
                "returnParameters": {
                  "id": 5651,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5650,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5735,
                      "src": "13204:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5649,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13204:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13203:9:15"
                },
                "scope": 7400,
                "src": "13105:856:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5760,
                  "nodeType": "Block",
                  "src": "14020:103:15",
                  "statements": [
                    {
                      "body": {
                        "id": 5758,
                        "nodeType": "Block",
                        "src": "14073:44:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5753,
                                    "name": "_pids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5738,
                                    "src": "14097:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 5755,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5754,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5742,
                                    "src": "14103:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14097:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5752,
                                "name": "claimReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5775,
                                "src": "14085:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256)"
                                }
                              },
                              "id": 5756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14085:21:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5757,
                            "nodeType": "ExpressionStatement",
                            "src": "14085:21:15"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5745,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5742,
                          "src": "14050:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5746,
                            "name": "_pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5738,
                            "src": "14054:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14054:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "14050:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5759,
                      "initializationExpression": {
                        "assignments": [
                          5742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5742,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5759,
                            "src": "14035:9:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5741,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14035:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5744,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14047:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14035:13:15"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "14068:3:15",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5749,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5742,
                            "src": "14068:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5751,
                        "nodeType": "ExpressionStatement",
                        "src": "14068:3:15"
                      },
                      "nodeType": "ForStatement",
                      "src": "14030:87:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5eac6239",
                "id": 5761,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "claimRewards",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5739,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5738,
                      "mutability": "mutable",
                      "name": "_pids",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5761,
                      "src": "13989:22:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13989:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5737,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13989:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13988:24:15"
                },
                "returnParameters": {
                  "id": 5740,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14020:0:15"
                },
                "scope": 7400,
                "src": "13967:156:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5774,
                  "nodeType": "Block",
                  "src": "14171:57:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5767,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5763,
                            "src": "14192:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5766,
                          "name": "updatePool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5422,
                          "src": "14181:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 5768,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14181:16:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5769,
                      "nodeType": "ExpressionStatement",
                      "src": "14181:16:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5771,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5763,
                            "src": "14216:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5770,
                          "name": "_harvest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5907,
                          "src": "14207:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 5772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14207:14:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5773,
                      "nodeType": "ExpressionStatement",
                      "src": "14207:14:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ae169a50",
                "id": 5775,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "claimReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5764,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5763,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5775,
                      "src": "14150:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5762,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14150:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14149:14:15"
                },
                "returnParameters": {
                  "id": 5765,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14171:0:15"
                },
                "scope": 7400,
                "src": "14129:99:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5906,
                  "nodeType": "Block",
                  "src": "14329:1119:15",
                  "statements": [
                    {
                      "assignments": [
                        5781
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5781,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5906,
                          "src": "14339:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5780,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "14339:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5785,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5782,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "14363:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 5784,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5783,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5777,
                          "src": "14372:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "14363:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14339:38:15"
                    },
                    {
                      "assignments": [
                        5787
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5787,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5906,
                          "src": "14387:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5786,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "14387:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5794,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5788,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "14411:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 5790,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5789,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5777,
                            "src": "14420:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14411:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 5793,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5791,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "14426:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14426:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "14411:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14387:50:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5795,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5787,
                            "src": "14452:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 5796,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4713,
                          "src": "14452:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14466:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "14452:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5905,
                      "nodeType": "IfStatement",
                      "src": "14448:994:15",
                      "trueBody": {
                        "id": 5904,
                        "nodeType": "Block",
                        "src": "14469:973:15",
                        "statements": [
                          {
                            "assignments": [
                              5800
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5800,
                                "mutability": "mutable",
                                "name": "pending",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5904,
                                "src": "14483:15:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5799,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14483:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5814,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5811,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5787,
                                    "src": "14594:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 5812,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4715,
                                  "src": "14594:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31653132",
                                      "id": 5808,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14563:4:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000_by_1",
                                        "typeString": "int_const 1000000000000"
                                      },
                                      "value": "1e12"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000_by_1",
                                        "typeString": "int_const 1000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5804,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5781,
                                            "src": "14533:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                            }
                                          },
                                          "id": 5805,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGovTokenPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4745,
                                          "src": "14533:24:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5801,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5787,
                                            "src": "14517:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 5802,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4713,
                                          "src": "14517:11:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5803,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "14517:15:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 5806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14517:41:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 369,
                                    "src": "14517:45:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 5809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14517:51:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 313,
                                "src": "14517:55:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14517:110:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14483:144:15"
                          },
                          {
                            "assignments": [
                              5816
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5816,
                                "mutability": "mutable",
                                "name": "masterBal",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5904,
                                "src": "14641:17:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5815,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14641:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5824,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5821,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "14688:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                        "typeString": "contract MasterBreeder"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                        "typeString": "contract MasterBreeder"
                                      }
                                    ],
                                    "id": 5820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14680:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5819,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14680:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14680:13:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5817,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "14661:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                    "typeString": "contract GovernanceToken"
                                  }
                                },
                                "id": 5818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 567,
                                "src": "14661:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 5823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14661:33:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14641:53:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5825,
                                "name": "pending",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5800,
                                "src": "14713:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5826,
                                "name": "masterBal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5816,
                                "src": "14723:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14713:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5833,
                            "nodeType": "IfStatement",
                            "src": "14709:77:15",
                            "trueBody": {
                              "id": 5832,
                              "nodeType": "Block",
                              "src": "14734:52:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5828,
                                      "name": "pending",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5800,
                                      "src": "14752:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 5829,
                                      "name": "masterBal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5816,
                                      "src": "14762:9:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14752:19:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5831,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14752:19:15"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5834,
                                "name": "pending",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5800,
                                "src": "14804:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14814:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "14804:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5889,
                            "nodeType": "IfStatement",
                            "src": "14800:548:15",
                            "trueBody": {
                              "id": 5888,
                              "nodeType": "Block",
                              "src": "14817:531:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5840,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "14853:3:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 5841,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "14853:10:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 5842,
                                        "name": "pending",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5800,
                                        "src": "14865:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5837,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "14835:8:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                          "typeString": "contract GovernanceToken"
                                        }
                                      },
                                      "id": 5839,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 588,
                                      "src": "14835:17:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 5843,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14835:38:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5844,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14835:38:15"
                                },
                                {
                                  "assignments": [
                                    5846
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5846,
                                      "mutability": "mutable",
                                      "name": "lockAmount",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 5888,
                                      "src": "14891:18:15",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5845,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14891:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5848,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5847,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14912:1:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14891:22:15"
                                },
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5852,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5849,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5787,
                                        "src": "14935:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 5850,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rewardDebtAtBlock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4717,
                                      "src": "14935:22:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 5851,
                                      "name": "FINISH_BONUS_AT_BLOCK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4780,
                                      "src": "14961:21:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14935:47:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 5872,
                                  "nodeType": "IfStatement",
                                  "src": "14931:259:15",
                                  "trueBody": {
                                    "id": 5871,
                                    "nodeType": "Block",
                                    "src": "14984:206:15",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5861,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 5853,
                                            "name": "lockAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5846,
                                            "src": "15006:10:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "313030",
                                                "id": 5859,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "15087:3:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                },
                                                "value": "100"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 5856,
                                                    "name": "PERCENT_LOCK_BONUS_REWARD",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4788,
                                                    "src": "15031:25:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 5854,
                                                    "name": "pending",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5800,
                                                    "src": "15019:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 5855,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 347,
                                                  "src": "15019:11:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 5857,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15019:38:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5858,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "div",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 369,
                                              "src": "15019:42:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5860,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15019:93:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15006:106:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5862,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15006:106:15"
                                      },
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5866,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "15148:3:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 5867,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "15148:10:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 5868,
                                              "name": "lockAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5846,
                                              "src": "15160:10:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 5863,
                                              "name": "govToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4748,
                                              "src": "15134:8:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                                "typeString": "contract GovernanceToken"
                                              }
                                            },
                                            "id": 5865,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lock",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3175,
                                            "src": "15134:13:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                              "typeString": "function (address,uint256) external"
                                            }
                                          },
                                          "id": 5869,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15134:37:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 5870,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15134:37:15"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5873,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5787,
                                        "src": "15208:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 5875,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "rewardDebtAtBlock",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4717,
                                      "src": "15208:22:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5876,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "15233:5:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 5877,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "15233:12:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15208:37:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5879,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15208:37:15"
                                },
                                {
                                  "eventCall": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5881,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "15295:3:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 5882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "15295:10:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 5883,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5777,
                                        "src": "15307:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 5884,
                                        "name": "pending",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5800,
                                        "src": "15313:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 5885,
                                        "name": "lockAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5846,
                                        "src": "15322:10:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5880,
                                      "name": "SendGovernanceTokenReward",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4854,
                                      "src": "15269:25:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256,uint256,uint256)"
                                      }
                                    },
                                    "id": 5886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15269:64:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5887,
                                  "nodeType": "EmitStatement",
                                  "src": "15264:69:15"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5890,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5787,
                                  "src": "15362:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 5892,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4715,
                                "src": "15362:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31653132",
                                    "id": 5900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15426:4:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000_by_1",
                                      "typeString": "int_const 1000000000000"
                                    },
                                    "value": "1e12"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000_by_1",
                                      "typeString": "int_const 1000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5896,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5781,
                                          "src": "15396:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                            "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                          }
                                        },
                                        "id": 5897,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "accGovTokenPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4745,
                                        "src": "15396:24:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5893,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5787,
                                          "src": "15380:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 5894,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4713,
                                        "src": "15380:11:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 5895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "15380:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 5898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15380:41:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "15380:45:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15380:51:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15362:69:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5903,
                            "nodeType": "ExpressionStatement",
                            "src": "15362:69:15"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 5907,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_harvest",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5778,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5777,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "14306:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5776,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14306:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14305:14:15"
                },
                "returnParameters": {
                  "id": 5779,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14329:0:15"
                },
                "scope": 7400,
                "src": "14288:1160:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5923,
                  "nodeType": "Block",
                  "src": "15524:107:15",
                  "statements": [
                    {
                      "assignments": [
                        5915
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5915,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5923,
                          "src": "15534:29:15",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5914,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "15534:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5919,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5916,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "15566:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 5918,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5917,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5909,
                          "src": "15581:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15566:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15534:53:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5920,
                          "name": "current",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5915,
                          "src": "15604:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo memory"
                          }
                        },
                        "id": 5921,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "globalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4728,
                        "src": "15604:20:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5913,
                      "id": 5922,
                      "nodeType": "Return",
                      "src": "15597:27:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "929c6971",
                "id": 5924,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGlobalAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5910,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5909,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5924,
                      "src": "15479:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5908,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15479:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15478:15:15"
                },
                "returnParameters": {
                  "id": 5913,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5912,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5924,
                      "src": "15515:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5911,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15515:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15514:9:15"
                },
                "scope": 7400,
                "src": "15454:177:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5940,
                  "nodeType": "Block",
                  "src": "15710:110:15",
                  "statements": [
                    {
                      "assignments": [
                        5932
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5932,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5940,
                          "src": "15720:29:15",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5931,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "15720:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5936,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5933,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "15752:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 5935,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5934,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5926,
                          "src": "15767:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15752:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15720:53:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5937,
                          "name": "current",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5932,
                          "src": "15790:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo memory"
                          }
                        },
                        "id": 5938,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "globalRefAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4736,
                        "src": "15790:23:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5930,
                      "id": 5939,
                      "nodeType": "Return",
                      "src": "15783:30:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5c5e490b",
                "id": 5941,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGlobalRefAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5927,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5926,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5941,
                      "src": "15665:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5925,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15665:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15664:15:15"
                },
                "returnParameters": {
                  "id": 5930,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5929,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5941,
                      "src": "15701:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5928,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15701:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15700:9:15"
                },
                "scope": 7400,
                "src": "15637:183:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5957,
                  "nodeType": "Block",
                  "src": "15893:108:15",
                  "statements": [
                    {
                      "assignments": [
                        5949
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5949,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5957,
                          "src": "15903:29:15",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5948,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "15903:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5953,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5950,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "15935:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 5952,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5951,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5943,
                          "src": "15950:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15935:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15903:53:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5954,
                          "name": "current",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5949,
                          "src": "15973:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_memory_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo memory"
                          }
                        },
                        "id": 5955,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalReferals",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4734,
                        "src": "15973:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5947,
                      "id": 5956,
                      "nodeType": "Return",
                      "src": "15966:28:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "36ebcde6",
                "id": 5958,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getTotalRefs",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5944,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5943,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5958,
                      "src": "15848:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5942,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15848:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15847:15:15"
                },
                "returnParameters": {
                  "id": 5947,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5946,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5958,
                      "src": "15884:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5945,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15884:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15883:9:15"
                },
                "scope": 7400,
                "src": "15826:175:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5982,
                  "nodeType": "Block",
                  "src": "16119:136:15",
                  "statements": [
                    {
                      "assignments": [
                        5968
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5968,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5982,
                          "src": "16129:30:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5967,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "16129:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5972,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5969,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "16162:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 5971,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5970,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5960,
                          "src": "16177:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16162:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16129:54:15"
                    },
                    {
                      "assignments": [
                        5974
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5974,
                          "mutability": "mutable",
                          "name": "a",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5982,
                          "src": "16193:9:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5973,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16193:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5979,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5975,
                            "name": "current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5968,
                            "src": "16205:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                            }
                          },
                          "id": 5976,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "referrals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4732,
                          "src": "16205:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 5978,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5977,
                          "name": "_user2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5962,
                          "src": "16223:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16205:25:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16193:37:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5980,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5974,
                        "src": "16247:1:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5966,
                      "id": 5981,
                      "nodeType": "Return",
                      "src": "16240:8:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "dd77b9fd",
                "id": 5983,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getRefValueOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5963,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5960,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5983,
                      "src": "16030:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5959,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16030:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5962,
                      "mutability": "mutable",
                      "name": "_user2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5983,
                      "src": "16045:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5961,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16045:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16029:31:15"
                },
                "returnParameters": {
                  "id": 5966,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5965,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5983,
                      "src": "16106:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5964,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16106:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16105:9:15"
                },
                "scope": 7400,
                "src": "16007:248:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6251,
                  "nodeType": "Block",
                  "src": "16447:1828:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5995,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5987,
                              "src": "16478:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16488:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16478:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6173746572427265656465723a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e2030",
                            "id": 5998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16503:55:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d2cb8c898954a3d56c638f599887717c58bf77f4be2a65706ec7d13ac359ca26",
                              "typeString": "literal_string \"MasterBreeder::deposit: amount must be greater than 0\""
                            },
                            "value": "MasterBreeder::deposit: amount must be greater than 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d2cb8c898954a3d56c638f599887717c58bf77f4be2a65706ec7d13ac359ca26",
                              "typeString": "literal_string \"MasterBreeder::deposit: amount must be greater than 0\""
                            }
                          ],
                          "id": 5994,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16457:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16457:111:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6000,
                      "nodeType": "ExpressionStatement",
                      "src": "16457:111:15"
                    },
                    {
                      "assignments": [
                        6002
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6002,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6251,
                          "src": "16579:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6001,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "16579:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6006,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6003,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "16603:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 6005,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6004,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5985,
                          "src": "16612:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16603:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16579:38:15"
                    },
                    {
                      "assignments": [
                        6008
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6008,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6251,
                          "src": "16627:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6007,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "16627:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6015,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6009,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "16651:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 6011,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6010,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "16660:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16651:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 6014,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6012,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "16666:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16666:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16651:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16627:50:15"
                    },
                    {
                      "assignments": [
                        6017
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6017,
                          "mutability": "mutable",
                          "name": "devr",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6251,
                          "src": "16687:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6016,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "16687:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6023,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6018,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "16711:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 6020,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6019,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "16720:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16711:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 6022,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6021,
                          "name": "devaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4752,
                          "src": "16726:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16711:23:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16687:47:15"
                    },
                    {
                      "assignments": [
                        6025
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6025,
                          "mutability": "mutable",
                          "name": "refer",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6251,
                          "src": "16744:28:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6024,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "16744:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6029,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6026,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "16775:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 6028,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6027,
                          "name": "_ref",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5989,
                          "src": "16790:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16775:20:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16744:51:15"
                    },
                    {
                      "assignments": [
                        6031
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6031,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6251,
                          "src": "16805:30:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6030,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "16805:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6036,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6032,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "16838:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 6035,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6033,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "16853:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16853:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16838:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16805:59:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6037,
                              "name": "refer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6025,
                              "src": "16879:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                              }
                            },
                            "id": 6038,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "referrals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4732,
                            "src": "16879:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6041,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6039,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "16895:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16895:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16879:27:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16909:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16879:31:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 6102,
                        "nodeType": "Block",
                        "src": "17079:220:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6069,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "17093:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6073,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "referrals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4732,
                                  "src": "17093:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 6074,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6071,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "17109:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 6072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "17109:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "17093:27:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6075,
                                      "name": "refer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6025,
                                      "src": "17123:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                      }
                                    },
                                    "id": 6076,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "referrals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4732,
                                    "src": "17123:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6079,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6077,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "17139:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "17139:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17123:27:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6080,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "17153:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17123:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17093:67:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6083,
                            "nodeType": "ExpressionStatement",
                            "src": "17093:67:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6084,
                                  "name": "refer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6025,
                                  "src": "17174:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                  }
                                },
                                "id": 6086,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "totalReferals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4734,
                                "src": "17174:19:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6087,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "17196:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6088,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "totalReferals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4734,
                                  "src": "17196:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 6089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17218:1:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "17196:23:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17174:45:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6092,
                            "nodeType": "ExpressionStatement",
                            "src": "17174:45:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6093,
                                  "name": "refer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6025,
                                  "src": "17233:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                  }
                                },
                                "id": 6095,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "globalRefAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4736,
                                "src": "17233:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6096,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "17257:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6097,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "globalRefAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4736,
                                  "src": "17257:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6098,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "17281:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17257:31:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17233:55:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6101,
                            "nodeType": "ExpressionStatement",
                            "src": "17233:55:15"
                          }
                        ]
                      },
                      "id": 6103,
                      "nodeType": "IfStatement",
                      "src": "16875:424:15",
                      "trueBody": {
                        "id": 6068,
                        "nodeType": "Block",
                        "src": "16912:161:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6044,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "16926:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6048,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "referrals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4732,
                                  "src": "16926:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 6049,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6046,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "16942:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 6047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "16942:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "16926:27:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6050,
                                      "name": "refer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6025,
                                      "src": "16956:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                      }
                                    },
                                    "id": 6051,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "referrals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4732,
                                    "src": "16956:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6054,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6052,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "16972:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "16972:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "16956:27:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6055,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "16986:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16956:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16926:67:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6058,
                            "nodeType": "ExpressionStatement",
                            "src": "16926:67:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6059,
                                  "name": "refer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6025,
                                  "src": "17007:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                  }
                                },
                                "id": 6061,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "globalRefAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4736,
                                "src": "17007:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6062,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "17031:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6063,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "globalRefAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4736,
                                  "src": "17031:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6064,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "17055:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17031:31:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17007:55:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6067,
                            "nodeType": "ExpressionStatement",
                            "src": "17007:55:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6104,
                            "name": "current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6031,
                            "src": "17309:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                            }
                          },
                          "id": 6106,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "globalAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4728,
                          "src": "17309:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6107,
                              "name": "current",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "17344:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                              }
                            },
                            "id": 6108,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "globalAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4728,
                            "src": "17344:20:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 6114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17407:3:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6111,
                                    "name": "userDepFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4782,
                                    "src": "17391:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6109,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5987,
                                    "src": "17379:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 347,
                                  "src": "17379:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17379:23:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 369,
                              "src": "17379:27:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17379:32:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17344:67:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17309:102:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6118,
                      "nodeType": "ExpressionStatement",
                      "src": "17309:102:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6120,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "17433:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6119,
                          "name": "updatePool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5422,
                          "src": "17422:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 6121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17422:16:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6122,
                      "nodeType": "ExpressionStatement",
                      "src": "17422:16:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6124,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "17457:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6123,
                          "name": "_harvest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5907,
                          "src": "17448:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 6125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17448:14:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6126,
                      "nodeType": "ExpressionStatement",
                      "src": "17448:14:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6134,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "17523:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 6135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17523:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 6133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17515:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6132,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17515:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17515:19:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6139,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17556:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              ],
                              "id": 6138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17548:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6137,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17548:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17548:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6141,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5987,
                            "src": "17575:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6127,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6002,
                              "src": "17472:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 6130,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lpToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4739,
                            "src": "17472:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 6131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1104,
                          "src": "17472:29:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                            "typeString": "function (contract IERC20,address,address,uint256)"
                          }
                        },
                        "id": 6142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17472:120:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6143,
                      "nodeType": "ExpressionStatement",
                      "src": "17472:120:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6144,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "17606:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6145,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4713,
                          "src": "17606:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17621:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "17606:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6156,
                      "nodeType": "IfStatement",
                      "src": "17602:84:15",
                      "trueBody": {
                        "id": 6155,
                        "nodeType": "Block",
                        "src": "17624:62:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6148,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6008,
                                  "src": "17638:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6150,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "rewardDebtAtBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4717,
                                "src": "17638:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6151,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "17663:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 6152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17663:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17638:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6154,
                            "nodeType": "ExpressionStatement",
                            "src": "17638:37:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6157,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "17695:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6159,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4713,
                          "src": "17695:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3130303030",
                                      "id": 6170,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17778:5:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      },
                                      "value": "10000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6167,
                                          "name": "userDepFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4782,
                                          "src": "17762:10:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6165,
                                          "name": "_amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5987,
                                          "src": "17750:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "17750:11:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6168,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17750:23:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 369,
                                    "src": "17750:27:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17750:34:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6163,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "17738:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 313,
                                "src": "17738:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17738:47:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6160,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6008,
                                "src": "17709:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                }
                              },
                              "id": 6161,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4713,
                              "src": "17709:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "17709:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17709:86:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17695:100:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6175,
                      "nodeType": "ExpressionStatement",
                      "src": "17695:100:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6176,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "17805:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6178,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "rewardDebt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4715,
                          "src": "17805:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31653132",
                              "id": 6186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17869:4:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000_by_1",
                                "typeString": "int_const 1000000000000"
                              },
                              "value": "1e12"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000_by_1",
                                "typeString": "int_const 1000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6182,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6002,
                                    "src": "17839:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                      "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                    }
                                  },
                                  "id": 6183,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accGovTokenPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4745,
                                  "src": "17839:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6179,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6008,
                                    "src": "17823:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 6180,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4713,
                                  "src": "17823:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 347,
                                "src": "17823:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17823:41:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 369,
                            "src": "17823:45:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17823:51:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17805:69:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6189,
                      "nodeType": "ExpressionStatement",
                      "src": "17805:69:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6190,
                            "name": "devr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6017,
                            "src": "17884:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6192,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4713,
                          "src": "17884:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3130303030",
                                      "id": 6203,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17966:5:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      },
                                      "value": "10000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6200,
                                          "name": "devDepFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4784,
                                          "src": "17951:9:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6198,
                                          "name": "_amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5987,
                                          "src": "17939:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6199,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "17939:11:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17939:22:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 369,
                                    "src": "17939:26:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17939:33:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6196,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5987,
                                  "src": "17927:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 313,
                                "src": "17927:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17927:46:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6193,
                                "name": "devr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6017,
                                "src": "17898:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                }
                              },
                              "id": 6194,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4713,
                              "src": "17898:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 291,
                            "src": "17898:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17898:85:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17884:99:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6208,
                      "nodeType": "ExpressionStatement",
                      "src": "17884:99:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6209,
                            "name": "devr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6017,
                            "src": "17993:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6211,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "rewardDebt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4715,
                          "src": "17993:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31653132",
                              "id": 6219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18057:4:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000_by_1",
                                "typeString": "int_const 1000000000000"
                              },
                              "value": "1e12"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000_by_1",
                                "typeString": "int_const 1000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6215,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6002,
                                    "src": "18027:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                      "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                    }
                                  },
                                  "id": 6216,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accGovTokenPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4745,
                                  "src": "18027:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6212,
                                    "name": "devr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6017,
                                    "src": "18011:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 6213,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4713,
                                  "src": "18011:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 347,
                                "src": "18011:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18011:41:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 369,
                            "src": "18011:45:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18011:51:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17993:69:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6222,
                      "nodeType": "ExpressionStatement",
                      "src": "17993:69:15"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6224,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "18085:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18085:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6226,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "18097:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6227,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5987,
                            "src": "18103:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6223,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4828,
                          "src": "18077:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 6228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18077:34:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6229,
                      "nodeType": "EmitStatement",
                      "src": "18072:39:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6230,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "18125:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6231,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "firstDepositBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4721,
                          "src": "18125:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18150:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "18125:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 6242,
                        "nodeType": "Block",
                        "src": "18161:62:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6235,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6008,
                                  "src": "18175:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6237,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "firstDepositBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4721,
                                "src": "18175:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6238,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "18200:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 6239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18200:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18175:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6241,
                            "nodeType": "ExpressionStatement",
                            "src": "18175:37:15"
                          }
                        ]
                      },
                      "id": 6243,
                      "nodeType": "IfStatement",
                      "src": "18121:102:15",
                      "trueBody": {
                        "id": 6234,
                        "nodeType": "Block",
                        "src": "18153:2:15",
                        "statements": []
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6244,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "18232:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6246,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "lastDepositBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4725,
                          "src": "18232:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6247,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "18256:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 6248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "18256:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18232:36:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6250,
                      "nodeType": "ExpressionStatement",
                      "src": "18232:36:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8dbdbe6d",
                "id": 6252,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 5992,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5991,
                      "name": "nonReentrant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2108,
                      "src": "16434:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "16434:12:15"
                  }
                ],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5990,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5985,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6252,
                      "src": "16361:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5984,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16361:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5987,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6252,
                      "src": "16383:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5986,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16383:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5989,
                      "mutability": "mutable",
                      "name": "_ref",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6252,
                      "src": "16408:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5988,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16408:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16351:75:15"
                },
                "returnParameters": {
                  "id": 5993,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "16447:0:15"
                },
                "scope": 7400,
                "src": "16335:1940:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6858,
                  "nodeType": "Block",
                  "src": "18440:5627:15",
                  "statements": [
                    {
                      "assignments": [
                        6264
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6264,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6858,
                          "src": "18450:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6263,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "18450:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6268,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6265,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "18474:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 6267,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6266,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6254,
                          "src": "18483:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18474:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18450:38:15"
                    },
                    {
                      "assignments": [
                        6270
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6270,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6858,
                          "src": "18498:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6269,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "18498:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6277,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6271,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "18522:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 6273,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6272,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6254,
                            "src": "18531:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18522:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 6276,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6274,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "18537:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "18537:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18522:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18498:50:15"
                    },
                    {
                      "assignments": [
                        6279
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6279,
                          "mutability": "mutable",
                          "name": "refer",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6858,
                          "src": "18558:28:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6278,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "18558:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6283,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6280,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "18589:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 6282,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6281,
                          "name": "_ref",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6258,
                          "src": "18604:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18589:20:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18558:51:15"
                    },
                    {
                      "assignments": [
                        6285
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6285,
                          "mutability": "mutable",
                          "name": "current",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6858,
                          "src": "18619:30:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                            "typeString": "struct MasterBreeder.UserGlobalInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6284,
                            "name": "UserGlobalInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4737,
                            "src": "18619:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6290,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6286,
                          "name": "userGlobalInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4813,
                          "src": "18652:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserGlobalInfo_$4737_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserGlobalInfo storage ref)"
                          }
                        },
                        "id": 6289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6287,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "18667:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "18667:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18652:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage",
                          "typeString": "struct MasterBreeder.UserGlobalInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18619:59:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6292,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6270,
                                "src": "18696:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                }
                              },
                              "id": 6293,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4713,
                              "src": "18696:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6294,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6256,
                              "src": "18711:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18696:22:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6173746572427265656465723a3a77697468647261773a206e6f7420676f6f64",
                            "id": 6296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18720:35:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_46a07d8a32a9bc6719d971d1b23e153652bd5d9a797fc8d081dded7f9c31c866",
                              "typeString": "literal_string \"MasterBreeder::withdraw: not good\""
                            },
                            "value": "MasterBreeder::withdraw: not good"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_46a07d8a32a9bc6719d971d1b23e153652bd5d9a797fc8d081dded7f9c31c866",
                              "typeString": "literal_string \"MasterBreeder::withdraw: not good\""
                            }
                          ],
                          "id": 6291,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "18688:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18688:68:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6298,
                      "nodeType": "ExpressionStatement",
                      "src": "18688:68:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6299,
                          "name": "_ref",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6258,
                          "src": "18770:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18786:1:15",
                              "subdenomination": null,
                              "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": 6301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18778:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6300,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18778:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18778:10:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "18770:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6330,
                      "nodeType": "IfStatement",
                      "src": "18766:185:15",
                      "trueBody": {
                        "id": 6329,
                        "nodeType": "Block",
                        "src": "18790:161:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6305,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6279,
                                    "src": "18804:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6309,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "referrals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4732,
                                  "src": "18804:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 6310,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6307,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "18820:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 6308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "18820:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "18804:27:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6311,
                                      "name": "refer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6279,
                                      "src": "18834:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                      }
                                    },
                                    "id": 6312,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "referrals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4732,
                                    "src": "18834:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 6315,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6313,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "18850:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "18850:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18834:27:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6316,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6256,
                                  "src": "18864:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18834:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18804:67:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6319,
                            "nodeType": "ExpressionStatement",
                            "src": "18804:67:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6320,
                                  "name": "refer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6279,
                                  "src": "18885:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                  }
                                },
                                "id": 6322,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "globalRefAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4736,
                                "src": "18885:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6323,
                                    "name": "refer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6279,
                                    "src": "18909:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                                    }
                                  },
                                  "id": 6324,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "globalRefAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4736,
                                  "src": "18909:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6325,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6256,
                                  "src": "18933:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18909:31:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18885:55:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6328,
                            "nodeType": "ExpressionStatement",
                            "src": "18885:55:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6331,
                            "name": "current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6285,
                            "src": "18960:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                              "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                            }
                          },
                          "id": 6333,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "globalAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4728,
                          "src": "18960:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6334,
                              "name": "current",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6285,
                              "src": "18983:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserGlobalInfo_$4737_storage_ptr",
                                "typeString": "struct MasterBreeder.UserGlobalInfo storage pointer"
                              }
                            },
                            "id": 6335,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "globalAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4728,
                            "src": "18983:20:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6336,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6256,
                            "src": "19006:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18983:30:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18960:53:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6339,
                      "nodeType": "ExpressionStatement",
                      "src": "18960:53:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6341,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6254,
                            "src": "19035:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6340,
                          "name": "updatePool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5422,
                          "src": "19024:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 6342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19024:16:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6343,
                      "nodeType": "ExpressionStatement",
                      "src": "19024:16:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6345,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6254,
                            "src": "19059:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6344,
                          "name": "_harvest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5907,
                          "src": "19050:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 6346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19050:14:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6347,
                      "nodeType": "ExpressionStatement",
                      "src": "19050:14:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6348,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6256,
                          "src": "19079:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19089:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "19079:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6857,
                      "nodeType": "IfStatement",
                      "src": "19075:4986:15",
                      "trueBody": {
                        "id": 6856,
                        "nodeType": "Block",
                        "src": "19092:4969:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6351,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "19106:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6353,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4713,
                                "src": "19106:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6357,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6256,
                                    "src": "19136:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6354,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6270,
                                      "src": "19120:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 6355,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4713,
                                    "src": "19120:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 313,
                                  "src": "19120:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19120:24:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19106:38:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6360,
                            "nodeType": "ExpressionStatement",
                            "src": "19106:38:15"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6361,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "19162:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6362,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastWithdrawBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4719,
                                "src": "19162:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19187:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19162:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 6386,
                              "nodeType": "Block",
                              "src": "19284:88:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6376,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6270,
                                        "src": "19302:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 6378,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "blockdelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4723,
                                      "src": "19302:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6383,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6379,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "19320:5:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 6380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "19320:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6381,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6270,
                                          "src": "19335:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 6382,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "firstDepositBlock",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4721,
                                        "src": "19335:22:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "19320:37:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19302:55:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6385,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19302:55:15"
                                }
                              ]
                            },
                            "id": 6387,
                            "nodeType": "IfStatement",
                            "src": "19158:214:15",
                            "trueBody": {
                              "id": 6375,
                              "nodeType": "Block",
                              "src": "19190:88:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6365,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6270,
                                        "src": "19208:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 6367,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "blockdelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4723,
                                      "src": "19208:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6368,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "19226:5:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 6369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "19226:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6370,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6270,
                                          "src": "19241:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 6371,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "lastWithdrawBlock",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4719,
                                        "src": "19241:22:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "19226:37:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19208:55:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6374,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19208:55:15"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6388,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6270,
                                    "src": "19406:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 6389,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "blockdelta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4723,
                                  "src": "19406:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 6390,
                                    "name": "blockDeltaStartStage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4769,
                                    "src": "19425:20:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 6392,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19446:1:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19425:23:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19406:42:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6394,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "19468:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 6395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19468:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6396,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6270,
                                    "src": "19484:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                      "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 6397,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastDepositBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4725,
                                  "src": "19484:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19468:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "19406:99:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6442,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6270,
                                      "src": "19994:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 6443,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "blockdelta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4723,
                                    "src": "19994:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6444,
                                      "name": "blockDeltaStartStage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4769,
                                      "src": "20013:20:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 6446,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 6445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20034:1:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "20013:23:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19994:42:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6448,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6270,
                                      "src": "20056:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                        "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 6449,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "blockdelta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4723,
                                    "src": "20056:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6450,
                                      "name": "blockDeltaEndStage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4772,
                                      "src": "20075:18:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 6452,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 6451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20094:1:15",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "20075:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20056:40:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "19994:102:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 6509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6502,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6497,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6270,
                                        "src": "20567:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 6498,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "blockdelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4723,
                                      "src": "20567:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 6499,
                                        "name": "blockDeltaStartStage",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4769,
                                        "src": "20586:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 6501,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 6500,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "20607:1:15",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "20586:23:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20567:42:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6503,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6270,
                                        "src": "20629:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                          "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 6504,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "blockdelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4723,
                                      "src": "20629:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 6505,
                                        "name": "blockDeltaEndStage",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4772,
                                        "src": "20648:18:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 6507,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 6506,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "20667:1:15",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "20648:21:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20629:40:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "20567:102:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6552,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6270,
                                          "src": "21133:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 6553,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "blockdelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4723,
                                        "src": "21133:15:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 6554,
                                          "name": "blockDeltaStartStage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4769,
                                          "src": "21152:20:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 6556,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "33",
                                          "id": 6555,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "21173:1:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_3_by_1",
                                            "typeString": "int_const 3"
                                          },
                                          "value": "3"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "21152:23:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "21133:42:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6563,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6558,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6270,
                                          "src": "21195:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 6559,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "blockdelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4723,
                                        "src": "21195:15:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 6560,
                                          "name": "blockDeltaEndStage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4772,
                                          "src": "21214:18:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 6562,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 6561,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "21233:1:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "21214:21:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "21195:40:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "21133:102:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 6619,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6607,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6270,
                                            "src": "21707:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 6608,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "blockdelta",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4723,
                                          "src": "21707:15:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 6609,
                                            "name": "blockDeltaStartStage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4769,
                                            "src": "21726:20:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                              "typeString": "uint256[] storage ref"
                                            }
                                          },
                                          "id": 6611,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "34",
                                            "id": 6610,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21747:1:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "21726:23:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "21707:42:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6613,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6270,
                                            "src": "21769:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 6614,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "blockdelta",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4723,
                                          "src": "21769:15:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 6615,
                                            "name": "blockDeltaEndStage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4772,
                                            "src": "21788:18:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                              "typeString": "uint256[] storage ref"
                                            }
                                          },
                                          "id": 6617,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "33",
                                            "id": 6616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21807:1:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "21788:21:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "21769:40:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "21707:102:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 6674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6667,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6662,
                                              "name": "user",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6270,
                                              "src": "22274:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                                "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                              }
                                            },
                                            "id": 6663,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "blockdelta",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4723,
                                            "src": "22274:15:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 6664,
                                              "name": "blockDeltaStartStage",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4769,
                                              "src": "22293:20:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 6666,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "35",
                                              "id": 6665,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "22314:1:15",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_5_by_1",
                                                "typeString": "int_const 5"
                                              },
                                              "value": "5"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "22293:23:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "22274:42:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6673,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6668,
                                              "name": "user",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6270,
                                              "src": "22336:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                                "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                              }
                                            },
                                            "id": 6669,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "blockdelta",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4723,
                                            "src": "22336:15:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 6670,
                                              "name": "blockDeltaEndStage",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4772,
                                              "src": "22355:18:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 6672,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "34",
                                              "id": 6671,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "22374:1:15",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_4_by_1",
                                                "typeString": "int_const 4"
                                              },
                                              "value": "4"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "22355:21:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "22336:40:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "22274:102:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 6729,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6722,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6717,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6270,
                                                "src": "22868:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 6718,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "blockdelta",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4723,
                                              "src": "22868:15:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 6719,
                                                "name": "blockDeltaStartStage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4769,
                                                "src": "22887:20:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 6721,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "36",
                                                "id": 6720,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "22908:1:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_6_by_1",
                                                  "typeString": "int_const 6"
                                                },
                                                "value": "6"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "22887:23:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "22868:42:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6728,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6723,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6270,
                                                "src": "22930:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 6724,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "blockdelta",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4723,
                                              "src": "22930:15:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 6725,
                                                "name": "blockDeltaEndStage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4772,
                                                "src": "22949:18:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 6727,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "35",
                                                "id": 6726,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "22968:1:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_5_by_1",
                                                  "typeString": "int_const 5"
                                                },
                                                "value": "5"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "22949:21:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "22930:40:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "22868:102:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6777,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6772,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6270,
                                                "src": "23408:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                                  "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 6773,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "blockdelta",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4723,
                                              "src": "23408:15:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 6774,
                                                "name": "blockDeltaStartStage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4769,
                                                "src": "23426:20:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 6776,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "37",
                                                "id": 6775,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "23447:1:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_7_by_1",
                                                  "typeString": "int_const 7"
                                                },
                                                "value": "7"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "23426:23:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "23408:41:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 6820,
                                          "nodeType": "IfStatement",
                                          "src": "23404:459:15",
                                          "trueBody": {
                                            "id": 6819,
                                            "nodeType": "Block",
                                            "src": "23451:412:15",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 6785,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "23599:3:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_magic_message",
                                                              "typeString": "msg"
                                                            }
                                                          },
                                                          "id": 6786,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "sender",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": null,
                                                          "src": "23599:10:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                          }
                                                        ],
                                                        "id": 6784,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "23591:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_address_$",
                                                          "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                          "id": 6783,
                                                          "name": "address",
                                                          "nodeType": "ElementaryTypeName",
                                                          "src": "23591:7:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                          }
                                                        }
                                                      },
                                                      "id": 6787,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "typeConversion",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "23591:19:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "hexValue": "3130303030",
                                                          "id": 6795,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "23665:5:15",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                          },
                                                          "value": "10000"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 6790,
                                                                "name": "userFeeStage",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4775,
                                                                "src": "23644:12:15",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 6792,
                                                              "indexExpression": {
                                                                "argumentTypes": null,
                                                                "hexValue": "37",
                                                                "id": 6791,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "23657:1:15",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_7_by_1",
                                                                  "typeString": "int_const 7"
                                                                },
                                                                "value": "7"
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "nodeType": "IndexAccess",
                                                              "src": "23644:15:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": null,
                                                              "id": 6788,
                                                              "name": "_amount",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 6256,
                                                              "src": "23632:7:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "id": 6789,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "mul",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 347,
                                                            "src": "23632:11:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                            }
                                                          },
                                                          "id": 6793,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "23632:28:15",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 6794,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 369,
                                                        "src": "23632:32:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 6796,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "23632:39:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6778,
                                                        "name": "pool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6264,
                                                        "src": "23544:4:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                          "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                        }
                                                      },
                                                      "id": 6781,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "lpToken",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 4739,
                                                      "src": "23544:12:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1045",
                                                        "typeString": "contract IERC20"
                                                      }
                                                    },
                                                    "id": 6782,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "safeTransfer",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1079,
                                                    "src": "23544:25:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                      "typeString": "function (contract IERC20,address,uint256)"
                                                    }
                                                  },
                                                  "id": 6797,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "23544:145:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                  }
                                                },
                                                "id": 6798,
                                                "nodeType": "ExpressionStatement",
                                                "src": "23544:145:15"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 6806,
                                                          "name": "devaddr",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4752,
                                                          "src": "23762:7:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                          }
                                                        ],
                                                        "id": 6805,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "23754:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_address_$",
                                                          "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                          "id": 6804,
                                                          "name": "address",
                                                          "nodeType": "ElementaryTypeName",
                                                          "src": "23754:7:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                          }
                                                        }
                                                      },
                                                      "id": 6807,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "typeConversion",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "23754:16:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "hexValue": "3130303030",
                                                          "id": 6815,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "23824:5:15",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                          },
                                                          "value": "10000"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 6810,
                                                                "name": "devFeeStage",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4778,
                                                                "src": "23804:11:15",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 6812,
                                                              "indexExpression": {
                                                                "argumentTypes": null,
                                                                "hexValue": "37",
                                                                "id": 6811,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "23816:1:15",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_7_by_1",
                                                                  "typeString": "int_const 7"
                                                                },
                                                                "value": "7"
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "nodeType": "IndexAccess",
                                                              "src": "23804:14:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": null,
                                                              "id": 6808,
                                                              "name": "_amount",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 6256,
                                                              "src": "23792:7:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "id": 6809,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "mul",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 347,
                                                            "src": "23792:11:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                            }
                                                          },
                                                          "id": 6813,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "23792:27:15",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 6814,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 369,
                                                        "src": "23792:31:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 6816,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "23792:38:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6799,
                                                        "name": "pool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6264,
                                                        "src": "23707:4:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                          "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                        }
                                                      },
                                                      "id": 6802,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "lpToken",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 4739,
                                                      "src": "23707:12:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1045",
                                                        "typeString": "contract IERC20"
                                                      }
                                                    },
                                                    "id": 6803,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "safeTransfer",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1079,
                                                    "src": "23707:25:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                      "typeString": "function (contract IERC20,address,uint256)"
                                                    }
                                                  },
                                                  "id": 6817,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "23707:141:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                  }
                                                },
                                                "id": 6818,
                                                "nodeType": "ExpressionStatement",
                                                "src": "23707:141:15"
                                              }
                                            ]
                                          }
                                        },
                                        "id": 6821,
                                        "nodeType": "IfStatement",
                                        "src": "22847:1016:15",
                                        "trueBody": {
                                          "id": 6771,
                                          "nodeType": "Block",
                                          "src": "22985:413:15",
                                          "statements": [
                                            {
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 6737,
                                                          "name": "msg",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": -15,
                                                          "src": "23134:3:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                          }
                                                        },
                                                        "id": 6738,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": null,
                                                        "src": "23134:10:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      ],
                                                      "id": 6736,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "23126:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                      },
                                                      "typeName": {
                                                        "id": 6735,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "23126:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": null,
                                                          "typeString": null
                                                        }
                                                      }
                                                    },
                                                    "id": 6739,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23126:19:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "hexValue": "3130303030",
                                                        "id": 6747,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "23200:5:15",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_10000_by_1",
                                                          "typeString": "int_const 10000"
                                                        },
                                                        "value": "10000"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_rational_10000_by_1",
                                                          "typeString": "int_const 10000"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                              "argumentTypes": null,
                                                              "id": 6742,
                                                              "name": "userFeeStage",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 4775,
                                                              "src": "23179:12:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 6744,
                                                            "indexExpression": {
                                                              "argumentTypes": null,
                                                              "hexValue": "36",
                                                              "id": 6743,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "23192:1:15",
                                                              "subdenomination": null,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_6_by_1",
                                                                "typeString": "int_const 6"
                                                              },
                                                              "value": "6"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "23179:15:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 6740,
                                                            "name": "_amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6256,
                                                            "src": "23167:7:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "id": 6741,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "mul",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 347,
                                                          "src": "23167:11:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                          }
                                                        },
                                                        "id": 6745,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "23167:28:15",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 6746,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "div",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 369,
                                                      "src": "23167:32:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 6748,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23167:39:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 6730,
                                                      "name": "pool",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6264,
                                                      "src": "23079:4:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                        "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                      }
                                                    },
                                                    "id": 6733,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "lpToken",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4739,
                                                    "src": "23079:12:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                                      "typeString": "contract IERC20"
                                                    }
                                                  },
                                                  "id": 6734,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "safeTransfer",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1079,
                                                  "src": "23079:25:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                    "typeString": "function (contract IERC20,address,uint256)"
                                                  }
                                                },
                                                "id": 6749,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "23079:145:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 6750,
                                              "nodeType": "ExpressionStatement",
                                              "src": "23079:145:15"
                                            },
                                            {
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 6758,
                                                        "name": "devaddr",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4752,
                                                        "src": "23297:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 6757,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "23289:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                      },
                                                      "typeName": {
                                                        "id": 6756,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "23289:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": null,
                                                          "typeString": null
                                                        }
                                                      }
                                                    },
                                                    "id": 6759,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23289:16:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "hexValue": "3130303030",
                                                        "id": 6767,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "23359:5:15",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_10000_by_1",
                                                          "typeString": "int_const 10000"
                                                        },
                                                        "value": "10000"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_rational_10000_by_1",
                                                          "typeString": "int_const 10000"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                              "argumentTypes": null,
                                                              "id": 6762,
                                                              "name": "devFeeStage",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 4778,
                                                              "src": "23339:11:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 6764,
                                                            "indexExpression": {
                                                              "argumentTypes": null,
                                                              "hexValue": "36",
                                                              "id": 6763,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "23351:1:15",
                                                              "subdenomination": null,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_6_by_1",
                                                                "typeString": "int_const 6"
                                                              },
                                                              "value": "6"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "23339:14:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 6760,
                                                            "name": "_amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6256,
                                                            "src": "23327:7:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "id": 6761,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "mul",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 347,
                                                          "src": "23327:11:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                          }
                                                        },
                                                        "id": 6765,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "23327:27:15",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 6766,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "div",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 369,
                                                      "src": "23327:31:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 6768,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23327:38:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 6751,
                                                      "name": "pool",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6264,
                                                      "src": "23242:4:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                        "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                      }
                                                    },
                                                    "id": 6754,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "lpToken",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4739,
                                                    "src": "23242:12:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                                      "typeString": "contract IERC20"
                                                    }
                                                  },
                                                  "id": 6755,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "safeTransfer",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1079,
                                                  "src": "23242:25:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                    "typeString": "function (contract IERC20,address,uint256)"
                                                  }
                                                },
                                                "id": 6769,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "23242:141:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 6770,
                                              "nodeType": "ExpressionStatement",
                                              "src": "23242:141:15"
                                            }
                                          ]
                                        }
                                      },
                                      "id": 6822,
                                      "nodeType": "IfStatement",
                                      "src": "22253:1610:15",
                                      "trueBody": {
                                        "id": 6716,
                                        "nodeType": "Block",
                                        "src": "22391:450:15",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6682,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "22579:3:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_magic_message",
                                                          "typeString": "msg"
                                                        }
                                                      },
                                                      "id": 6683,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "sender",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": null,
                                                      "src": "22579:10:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                      }
                                                    ],
                                                    "id": 6681,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "22571:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 6680,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "22571:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                      }
                                                    }
                                                  },
                                                  "id": 6684,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "22571:19:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "hexValue": "31303030",
                                                      "id": 6692,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "22645:4:15",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1000_by_1",
                                                        "typeString": "int_const 1000"
                                                      },
                                                      "value": "1000"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_rational_1000_by_1",
                                                        "typeString": "int_const 1000"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "baseExpression": {
                                                            "argumentTypes": null,
                                                            "id": 6687,
                                                            "name": "userFeeStage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4775,
                                                            "src": "22624:12:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 6689,
                                                          "indexExpression": {
                                                            "argumentTypes": null,
                                                            "hexValue": "35",
                                                            "id": 6688,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "22637:1:15",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_5_by_1",
                                                              "typeString": "int_const 5"
                                                            },
                                                            "value": "5"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "IndexAccess",
                                                          "src": "22624:15:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 6685,
                                                          "name": "_amount",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 6256,
                                                          "src": "22612:7:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 6686,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 347,
                                                        "src": "22612:11:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 6690,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "22612:28:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 6691,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "div",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "22612:32:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 6693,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "22612:38:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6675,
                                                    "name": "pool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6264,
                                                    "src": "22524:4:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                      "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                    }
                                                  },
                                                  "id": 6678,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "lpToken",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 4739,
                                                  "src": "22524:12:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                                    "typeString": "contract IERC20"
                                                  }
                                                },
                                                "id": 6679,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "safeTransfer",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1079,
                                                "src": "22524:25:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                  "typeString": "function (contract IERC20,address,uint256)"
                                                }
                                              },
                                              "id": 6694,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22524:144:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 6695,
                                            "nodeType": "ExpressionStatement",
                                            "src": "22524:144:15"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 6703,
                                                      "name": "devaddr",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4752,
                                                      "src": "22741:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 6702,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "22733:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 6701,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "22733:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                      }
                                                    }
                                                  },
                                                  "id": 6704,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "22733:16:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "hexValue": "31303030",
                                                      "id": 6712,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "22803:4:15",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1000_by_1",
                                                        "typeString": "int_const 1000"
                                                      },
                                                      "value": "1000"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_rational_1000_by_1",
                                                        "typeString": "int_const 1000"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "baseExpression": {
                                                            "argumentTypes": null,
                                                            "id": 6707,
                                                            "name": "devFeeStage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4778,
                                                            "src": "22783:11:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 6709,
                                                          "indexExpression": {
                                                            "argumentTypes": null,
                                                            "hexValue": "35",
                                                            "id": 6708,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "22795:1:15",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_5_by_1",
                                                              "typeString": "int_const 5"
                                                            },
                                                            "value": "5"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "IndexAccess",
                                                          "src": "22783:14:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 6705,
                                                          "name": "_amount",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 6256,
                                                          "src": "22771:7:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 6706,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 347,
                                                        "src": "22771:11:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 6710,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "22771:27:15",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 6711,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "div",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "22771:31:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 6713,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "22771:37:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6696,
                                                    "name": "pool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6264,
                                                    "src": "22686:4:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                      "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                    }
                                                  },
                                                  "id": 6699,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "lpToken",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 4739,
                                                  "src": "22686:12:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                                    "typeString": "contract IERC20"
                                                  }
                                                },
                                                "id": 6700,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "safeTransfer",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1079,
                                                "src": "22686:25:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                  "typeString": "function (contract IERC20,address,uint256)"
                                                }
                                              },
                                              "id": 6714,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22686:140:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 6715,
                                            "nodeType": "ExpressionStatement",
                                            "src": "22686:140:15"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 6823,
                                    "nodeType": "IfStatement",
                                    "src": "21686:2177:15",
                                    "trueBody": {
                                      "id": 6661,
                                      "nodeType": "Block",
                                      "src": "21824:423:15",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 6627,
                                                      "name": "msg",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": -15,
                                                      "src": "21987:3:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                      }
                                                    },
                                                    "id": 6628,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "21987:10:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address_payable",
                                                      "typeString": "address payable"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address_payable",
                                                      "typeString": "address payable"
                                                    }
                                                  ],
                                                  "id": 6626,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "21979:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 6625,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21979:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": null,
                                                      "typeString": null
                                                    }
                                                  }
                                                },
                                                "id": 6629,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "21979:19:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "hexValue": "313030",
                                                    "id": 6637,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "22053:3:15",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_100_by_1",
                                                      "typeString": "int_const 100"
                                                    },
                                                    "value": "100"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_100_by_1",
                                                      "typeString": "int_const 100"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                          "argumentTypes": null,
                                                          "id": 6632,
                                                          "name": "userFeeStage",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4775,
                                                          "src": "22032:12:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                            "typeString": "uint256[] storage ref"
                                                          }
                                                        },
                                                        "id": 6634,
                                                        "indexExpression": {
                                                          "argumentTypes": null,
                                                          "hexValue": "34",
                                                          "id": 6633,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "22045:1:15",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                          },
                                                          "value": "4"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "22032:15:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6630,
                                                        "name": "_amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6256,
                                                        "src": "22020:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 6631,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "mul",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 347,
                                                      "src": "22020:11:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 6635,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22020:28:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6636,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "div",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 369,
                                                  "src": "22020:32:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 6638,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "22020:37:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6620,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6264,
                                                  "src": "21932:4:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                    "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                  }
                                                },
                                                "id": 6623,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "lpToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4739,
                                                "src": "21932:12:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                                  "typeString": "contract IERC20"
                                                }
                                              },
                                              "id": 6624,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "safeTransfer",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1079,
                                              "src": "21932:25:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                              }
                                            },
                                            "id": 6639,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21932:143:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 6640,
                                          "nodeType": "ExpressionStatement",
                                          "src": "21932:143:15"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 6648,
                                                    "name": "devaddr",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4752,
                                                    "src": "22148:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 6647,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "22140:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 6646,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "22140:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": null,
                                                      "typeString": null
                                                    }
                                                  }
                                                },
                                                "id": 6649,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "22140:16:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "hexValue": "313030",
                                                    "id": 6657,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "22210:3:15",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_100_by_1",
                                                      "typeString": "int_const 100"
                                                    },
                                                    "value": "100"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_100_by_1",
                                                      "typeString": "int_const 100"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                          "argumentTypes": null,
                                                          "id": 6652,
                                                          "name": "devFeeStage",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4778,
                                                          "src": "22190:11:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                            "typeString": "uint256[] storage ref"
                                                          }
                                                        },
                                                        "id": 6654,
                                                        "indexExpression": {
                                                          "argumentTypes": null,
                                                          "hexValue": "34",
                                                          "id": 6653,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "22202:1:15",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                          },
                                                          "value": "4"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "22190:14:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6650,
                                                        "name": "_amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6256,
                                                        "src": "22178:7:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 6651,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "mul",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 347,
                                                      "src": "22178:11:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 6655,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22178:27:15",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6656,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "div",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 369,
                                                  "src": "22178:31:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 6658,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "22178:36:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6641,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6264,
                                                  "src": "22093:4:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                    "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                  }
                                                },
                                                "id": 6644,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "lpToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4739,
                                                "src": "22093:12:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC20_$1045",
                                                  "typeString": "contract IERC20"
                                                }
                                              },
                                              "id": 6645,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "safeTransfer",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1079,
                                              "src": "22093:25:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                              }
                                            },
                                            "id": 6659,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "22093:139:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 6660,
                                          "nodeType": "ExpressionStatement",
                                          "src": "22093:139:15"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 6824,
                                  "nodeType": "IfStatement",
                                  "src": "21112:2751:15",
                                  "trueBody": {
                                    "id": 6606,
                                    "nodeType": "Block",
                                    "src": "21250:430:15",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6572,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "21420:3:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_message",
                                                      "typeString": "msg"
                                                    }
                                                  },
                                                  "id": 6573,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "sender",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "21420:10:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                  }
                                                ],
                                                "id": 6571,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "21412:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 6570,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "21412:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": null,
                                                    "typeString": null
                                                  }
                                                }
                                              },
                                              "id": 6574,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21412:19:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "hexValue": "313030",
                                                  "id": 6582,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "21486:3:15",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_100_by_1",
                                                    "typeString": "int_const 100"
                                                  },
                                                  "value": "100"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_rational_100_by_1",
                                                    "typeString": "int_const 100"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 6577,
                                                        "name": "userFeeStage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4775,
                                                        "src": "21465:12:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                          "typeString": "uint256[] storage ref"
                                                        }
                                                      },
                                                      "id": 6579,
                                                      "indexExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "33",
                                                        "id": 6578,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "21478:1:15",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_3_by_1",
                                                          "typeString": "int_const 3"
                                                        },
                                                        "value": "3"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "IndexAccess",
                                                      "src": "21465:15:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 6575,
                                                      "name": "_amount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6256,
                                                      "src": "21453:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 6576,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 347,
                                                    "src": "21453:11:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 6580,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "21453:28:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6581,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "div",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 369,
                                                "src": "21453:32:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6583,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21453:37:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6565,
                                                "name": "pool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6264,
                                                "src": "21365:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                  "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                }
                                              },
                                              "id": 6568,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "lpToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4739,
                                              "src": "21365:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$1045",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 6569,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1079,
                                            "src": "21365:25:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                              "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                          },
                                          "id": 6584,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "21365:143:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 6585,
                                        "nodeType": "ExpressionStatement",
                                        "src": "21365:143:15"
                                      },
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 6593,
                                                  "name": "devaddr",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4752,
                                                  "src": "21581:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 6592,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "21573:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 6591,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "21573:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": null,
                                                    "typeString": null
                                                  }
                                                }
                                              },
                                              "id": 6594,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21573:16:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "hexValue": "313030",
                                                  "id": 6602,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "21643:3:15",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_100_by_1",
                                                    "typeString": "int_const 100"
                                                  },
                                                  "value": "100"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_rational_100_by_1",
                                                    "typeString": "int_const 100"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 6597,
                                                        "name": "devFeeStage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4778,
                                                        "src": "21623:11:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                          "typeString": "uint256[] storage ref"
                                                        }
                                                      },
                                                      "id": 6599,
                                                      "indexExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "33",
                                                        "id": 6598,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "21635:1:15",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_3_by_1",
                                                          "typeString": "int_const 3"
                                                        },
                                                        "value": "3"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "IndexAccess",
                                                      "src": "21623:14:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 6595,
                                                      "name": "_amount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6256,
                                                      "src": "21611:7:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 6596,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 347,
                                                    "src": "21611:11:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 6600,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "21611:27:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6601,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "div",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 369,
                                                "src": "21611:31:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6603,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21611:36:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6586,
                                                "name": "pool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6264,
                                                "src": "21526:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                  "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                                }
                                              },
                                              "id": 6589,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "lpToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4739,
                                              "src": "21526:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$1045",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 6590,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1079,
                                            "src": "21526:25:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                              "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                          },
                                          "id": 6604,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "21526:139:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 6605,
                                        "nodeType": "ExpressionStatement",
                                        "src": "21526:139:15"
                                      }
                                    ]
                                  }
                                },
                                "id": 6825,
                                "nodeType": "IfStatement",
                                "src": "20546:3317:15",
                                "trueBody": {
                                  "id": 6551,
                                  "nodeType": "Block",
                                  "src": "20684:422:15",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6517,
                                                  "name": "msg",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -15,
                                                  "src": "20846:3:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                  }
                                                },
                                                "id": 6518,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "20846:10:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              ],
                                              "id": 6516,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "20838:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6515,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "20838:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 6519,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20838:19:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "313030",
                                                "id": 6527,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "20912:3:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                },
                                                "value": "100"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 6522,
                                                      "name": "userFeeStage",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4775,
                                                      "src": "20891:12:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                        "typeString": "uint256[] storage ref"
                                                      }
                                                    },
                                                    "id": 6524,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "32",
                                                      "id": 6523,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "20904:1:15",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                      },
                                                      "value": "2"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "20891:15:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6520,
                                                    "name": "_amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6256,
                                                    "src": "20879:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6521,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 347,
                                                  "src": "20879:11:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 6525,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "20879:28:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 6526,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "div",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 369,
                                              "src": "20879:32:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 6528,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20879:37:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6510,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6264,
                                              "src": "20791:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                              }
                                            },
                                            "id": 6513,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lpToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4739,
                                            "src": "20791:12:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$1045",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 6514,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "safeTransfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1079,
                                          "src": "20791:25:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                            "typeString": "function (contract IERC20,address,uint256)"
                                          }
                                        },
                                        "id": 6529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20791:143:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6530,
                                      "nodeType": "ExpressionStatement",
                                      "src": "20791:143:15"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 6538,
                                                "name": "devaddr",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4752,
                                                "src": "21007:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 6537,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "20999:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6536,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "20999:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 6539,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20999:16:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "313030",
                                                "id": 6547,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21069:3:15",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                },
                                                "value": "100"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_100_by_1",
                                                  "typeString": "int_const 100"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 6542,
                                                      "name": "devFeeStage",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4778,
                                                      "src": "21049:11:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                        "typeString": "uint256[] storage ref"
                                                      }
                                                    },
                                                    "id": 6544,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "32",
                                                      "id": 6543,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "21061:1:15",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                      },
                                                      "value": "2"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "21049:14:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6540,
                                                    "name": "_amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6256,
                                                    "src": "21037:7:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 6541,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 347,
                                                  "src": "21037:11:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 6545,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "21037:27:15",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 6546,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "div",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 369,
                                              "src": "21037:31:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 6548,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21037:36:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6531,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6264,
                                              "src": "20952:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                              }
                                            },
                                            "id": 6534,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lpToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4739,
                                            "src": "20952:12:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$1045",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 6535,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "safeTransfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1079,
                                          "src": "20952:25:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                            "typeString": "function (contract IERC20,address,uint256)"
                                          }
                                        },
                                        "id": 6549,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20952:139:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6550,
                                      "nodeType": "ExpressionStatement",
                                      "src": "20952:139:15"
                                    }
                                  ]
                                }
                              },
                              "id": 6826,
                              "nodeType": "IfStatement",
                              "src": "19973:3890:15",
                              "trueBody": {
                                "id": 6496,
                                "nodeType": "Block",
                                "src": "20111:429:15",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6462,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "20280:3:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 6463,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "20280:10:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            ],
                                            "id": 6461,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "20272:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 6460,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "20272:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 6464,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20272:19:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 6472,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "20346:3:15",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 6467,
                                                    "name": "userFeeStage",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4775,
                                                    "src": "20325:12:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 6469,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "31",
                                                    "id": 6468,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "20338:1:15",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "20325:15:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6465,
                                                  "name": "_amount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6256,
                                                  "src": "20313:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6466,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 347,
                                                "src": "20313:11:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6470,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "20313:28:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6471,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 369,
                                            "src": "20313:32:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6473,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20313:37:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6455,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6264,
                                            "src": "20225:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                            }
                                          },
                                          "id": 6458,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lpToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4739,
                                          "src": "20225:12:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$1045",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 6459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1079,
                                        "src": "20225:25:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                          "typeString": "function (contract IERC20,address,uint256)"
                                        }
                                      },
                                      "id": 6474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20225:143:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6475,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20225:143:15"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 6483,
                                              "name": "devaddr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4752,
                                              "src": "20441:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 6482,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "20433:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 6481,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "20433:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 6484,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20433:16:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 6492,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "20503:3:15",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 6487,
                                                    "name": "devFeeStage",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4778,
                                                    "src": "20483:11:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 6489,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "31",
                                                    "id": 6488,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "20495:1:15",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "20483:14:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6485,
                                                  "name": "_amount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6256,
                                                  "src": "20471:7:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6486,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 347,
                                                "src": "20471:11:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6490,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "20471:27:15",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6491,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 369,
                                            "src": "20471:31:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20471:36:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6476,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6264,
                                            "src": "20386:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                              "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                            }
                                          },
                                          "id": 6479,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lpToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4739,
                                          "src": "20386:12:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$1045",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 6480,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1079,
                                        "src": "20386:25:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                          "typeString": "function (contract IERC20,address,uint256)"
                                        }
                                      },
                                      "id": 6494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20386:139:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6495,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20386:139:15"
                                  }
                                ]
                              }
                            },
                            "id": 6827,
                            "nodeType": "IfStatement",
                            "src": "19385:4478:15",
                            "trueBody": {
                              "id": 6441,
                              "nodeType": "Block",
                              "src": "19520:447:15",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6407,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "19707:3:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 6408,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "19707:10:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          ],
                                          "id": 6406,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "19699:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 6405,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "19699:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 6409,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19699:19:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 6417,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19773:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 6412,
                                                  "name": "userFeeStage",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4775,
                                                  "src": "19752:12:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                    "typeString": "uint256[] storage ref"
                                                  }
                                                },
                                                "id": 6414,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 6413,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19765:1:15",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "19752:15:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6410,
                                                "name": "_amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6256,
                                                "src": "19740:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 6411,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "19740:11:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 6415,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "19740:28:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6416,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "19740:32:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6418,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19740:37:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6400,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6264,
                                          "src": "19652:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                            "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                          }
                                        },
                                        "id": 6403,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "lpToken",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4739,
                                        "src": "19652:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$1045",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 6404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "safeTransfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1079,
                                      "src": "19652:25:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                        "typeString": "function (contract IERC20,address,uint256)"
                                      }
                                    },
                                    "id": 6419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19652:143:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6420,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19652:143:15"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6428,
                                            "name": "devaddr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4752,
                                            "src": "19868:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 6427,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "19860:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 6426,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "19860:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 6429,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19860:16:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "313030",
                                            "id": 6437,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19930:3:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 6432,
                                                  "name": "devFeeStage",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4778,
                                                  "src": "19910:11:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                    "typeString": "uint256[] storage ref"
                                                  }
                                                },
                                                "id": 6434,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 6433,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19922:1:15",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "19910:14:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6430,
                                                "name": "_amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6256,
                                                "src": "19898:7:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 6431,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 347,
                                              "src": "19898:11:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 6435,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "19898:27:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6436,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 369,
                                          "src": "19898:31:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6438,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19898:36:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6421,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6264,
                                          "src": "19813:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                            "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                          }
                                        },
                                        "id": 6424,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "lpToken",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4739,
                                        "src": "19813:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$1045",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 6425,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "safeTransfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1079,
                                      "src": "19813:25:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                        "typeString": "function (contract IERC20,address,uint256)"
                                      }
                                    },
                                    "id": 6439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19813:139:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6440,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19813:139:15"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6828,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "23876:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6830,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4715,
                                "src": "23876:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31653132",
                                    "id": 6838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23940:4:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000_by_1",
                                      "typeString": "int_const 1000000000000"
                                    },
                                    "value": "1e12"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000_by_1",
                                      "typeString": "int_const 1000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6834,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6264,
                                          "src": "23910:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                            "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                                          }
                                        },
                                        "id": 6835,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "accGovTokenPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4745,
                                        "src": "23910:24:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6831,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6270,
                                          "src": "23894:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                            "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                          }
                                        },
                                        "id": 6832,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4713,
                                        "src": "23894:11:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 347,
                                      "src": "23894:15:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23894:41:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "23894:45:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23894:51:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23876:69:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6841,
                            "nodeType": "ExpressionStatement",
                            "src": "23876:69:15"
                          },
                          {
                            "eventCall": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6843,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "23973:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 6844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "23973:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6845,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6254,
                                  "src": "23985:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6846,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6256,
                                  "src": "23991:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6842,
                                "name": "Withdraw",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4836,
                                "src": "23964:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256,uint256)"
                                }
                              },
                              "id": 6847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23964:35:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 6848,
                            "nodeType": "EmitStatement",
                            "src": "23959:40:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6849,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6270,
                                  "src": "24013:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6851,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "lastWithdrawBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4719,
                                "src": "24013:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6852,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "24038:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 6853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "24038:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24013:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6855,
                            "nodeType": "ExpressionStatement",
                            "src": "24013:37:15"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0ad58d2f",
                "id": 6859,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 6261,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 6260,
                      "name": "nonReentrant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2108,
                      "src": "18427:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "18427:12:15"
                  }
                ],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6259,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6254,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6859,
                      "src": "18354:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6253,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18354:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6256,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6859,
                      "src": "18376:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6255,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18376:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6258,
                      "mutability": "mutable",
                      "name": "_ref",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6859,
                      "src": "18401:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6257,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18401:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18344:75:15"
                },
                "returnParameters": {
                  "id": 6262,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "18440:0:15"
                },
                "scope": 7400,
                "src": "18327:5740:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6947,
                  "nodeType": "Block",
                  "src": "24282:556:15",
                  "statements": [
                    {
                      "assignments": [
                        6867
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6867,
                          "mutability": "mutable",
                          "name": "pool",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6947,
                          "src": "24292:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                            "typeString": "struct MasterBreeder.PoolInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6866,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4746,
                            "src": "24292:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                              "typeString": "struct MasterBreeder.PoolInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6871,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6868,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4799,
                          "src": "24316:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "id": 6870,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6869,
                          "name": "_pid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6861,
                          "src": "24325:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "24316:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "24292:38:15"
                    },
                    {
                      "assignments": [
                        6873
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6873,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6947,
                          "src": "24340:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 6872,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "24340:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6880,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6874,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "24364:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 6876,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6875,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6861,
                            "src": "24373:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24364:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 6879,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6877,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "24379:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "24379:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "24364:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "24340:50:15"
                    },
                    {
                      "assignments": [
                        6882
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6882,
                          "mutability": "mutable",
                          "name": "amountToSend",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6947,
                          "src": "24470:20:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6881,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "24470:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6891,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 6889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24517:3:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3735",
                                "id": 6886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24509:2:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_75_by_1",
                                  "typeString": "int_const 75"
                                },
                                "value": "75"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_75_by_1",
                                  "typeString": "int_const 75"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6883,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6873,
                                  "src": "24493:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6884,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4713,
                                "src": "24493:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "24493:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24493:19:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "24493:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24493:28:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "24470:51:15"
                    },
                    {
                      "assignments": [
                        6893
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6893,
                          "mutability": "mutable",
                          "name": "devToSend",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6947,
                          "src": "24531:17:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6892,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "24531:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6902,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 6900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24575:3:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3235",
                                "id": 6897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24567:2:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_25_by_1",
                                  "typeString": "int_const 25"
                                },
                                "value": "25"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_25_by_1",
                                  "typeString": "int_const 25"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6894,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6873,
                                  "src": "24551:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 6895,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4713,
                                "src": "24551:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "24551:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24551:19:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "24551:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24551:28:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "24531:48:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6903,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6873,
                            "src": "24589:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6905,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4713,
                          "src": "24589:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24603:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "24589:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6908,
                      "nodeType": "ExpressionStatement",
                      "src": "24589:15:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6909,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6873,
                            "src": "24614:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 6911,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "rewardDebt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4715,
                          "src": "24614:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24632:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "24614:19:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6914,
                      "nodeType": "ExpressionStatement",
                      "src": "24614:19:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6922,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "24677:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 6923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "24677:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 6921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24669:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6920,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24669:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24669:19:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6925,
                            "name": "amountToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6882,
                            "src": "24690:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6915,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6867,
                              "src": "24643:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 6918,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lpToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4739,
                            "src": "24643:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 6919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1079,
                          "src": "24643:25:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                            "typeString": "function (contract IERC20,address,uint256)"
                          }
                        },
                        "id": 6926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24643:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6927,
                      "nodeType": "ExpressionStatement",
                      "src": "24643:60:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6935,
                                "name": "devaddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4752,
                                "src": "24747:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24739:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6933,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24739:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24739:16:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6937,
                            "name": "devToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6893,
                            "src": "24757:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6928,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6867,
                              "src": "24713:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4746_storage_ptr",
                                "typeString": "struct MasterBreeder.PoolInfo storage pointer"
                              }
                            },
                            "id": 6931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lpToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4739,
                            "src": "24713:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 6932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1079,
                          "src": "24713:25:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                            "typeString": "function (contract IERC20,address,uint256)"
                          }
                        },
                        "id": 6938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24713:54:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6939,
                      "nodeType": "ExpressionStatement",
                      "src": "24713:54:15"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6941,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "24800:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24800:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6943,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6861,
                            "src": "24812:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6944,
                            "name": "amountToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6882,
                            "src": "24818:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6940,
                          "name": "EmergencyWithdraw",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4844,
                          "src": "24782:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 6945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24782:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6946,
                      "nodeType": "EmitStatement",
                      "src": "24777:54:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5312ea8e",
                "id": 6948,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 6864,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 6863,
                      "name": "nonReentrant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2108,
                      "src": "24269:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "24269:12:15"
                  }
                ],
                "name": "emergencyWithdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6862,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6861,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6948,
                      "src": "24248:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6860,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "24248:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "24247:14:15"
                },
                "returnParameters": {
                  "id": 6865,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "24282:0:15"
                },
                "scope": 7400,
                "src": "24221:617:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6996,
                  "nodeType": "Block",
                  "src": "25026:394:15",
                  "statements": [
                    {
                      "assignments": [
                        6956
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6956,
                          "mutability": "mutable",
                          "name": "govTokenBal",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6996,
                          "src": "25036:19:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6955,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "25036:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6964,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6961,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "25085:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MasterBreeder_$7400",
                                  "typeString": "contract MasterBreeder"
                                }
                              ],
                              "id": 6960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25077:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6959,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "25077:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25077:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6957,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4748,
                            "src": "25058:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                              "typeString": "contract GovernanceToken"
                            }
                          },
                          "id": 6958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 567,
                          "src": "25058:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 6963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25058:33:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "25036:55:15"
                    },
                    {
                      "assignments": [
                        6966
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6966,
                          "mutability": "mutable",
                          "name": "transferSuccess",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6996,
                          "src": "25101:20:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6965,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "25101:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6968,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 6967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25124:5:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "25101:28:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6969,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6952,
                          "src": "25143:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6970,
                          "name": "govTokenBal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6956,
                          "src": "25153:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25143:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 6989,
                        "nodeType": "Block",
                        "src": "25250:74:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6981,
                                "name": "transferSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6966,
                                "src": "25264:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6984,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6950,
                                    "src": "25300:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6985,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6952,
                                    "src": "25305:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6982,
                                    "name": "govToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4748,
                                    "src": "25282:8:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                      "typeString": "contract GovernanceToken"
                                    }
                                  },
                                  "id": 6983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 588,
                                  "src": "25282:17:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 6986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25282:31:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "25264:49:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6988,
                            "nodeType": "ExpressionStatement",
                            "src": "25264:49:15"
                          }
                        ]
                      },
                      "id": 6990,
                      "nodeType": "IfStatement",
                      "src": "25139:185:15",
                      "trueBody": {
                        "id": 6980,
                        "nodeType": "Block",
                        "src": "25166:78:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6972,
                                "name": "transferSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6966,
                                "src": "25180:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6975,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6950,
                                    "src": "25216:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6976,
                                    "name": "govTokenBal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6956,
                                    "src": "25221:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6973,
                                    "name": "govToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4748,
                                    "src": "25198:8:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                                      "typeString": "contract GovernanceToken"
                                    }
                                  },
                                  "id": 6974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 588,
                                  "src": "25198:17:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 6977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25198:35:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "25180:53:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6979,
                            "nodeType": "ExpressionStatement",
                            "src": "25180:53:15"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6992,
                            "name": "transferSuccess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6966,
                            "src": "25341:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6173746572427265656465723a3a73616665476f76546f6b656e5472616e736665723a207472616e73666572206661696c6564",
                            "id": 6993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25358:54:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86ad5024a7df03aa0c4598ced61dc57e02ed000252238efa033586090d5c0518",
                              "typeString": "literal_string \"MasterBreeder::safeGovTokenTransfer: transfer failed\""
                            },
                            "value": "MasterBreeder::safeGovTokenTransfer: transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_86ad5024a7df03aa0c4598ced61dc57e02ed000252238efa033586090d5c0518",
                              "typeString": "literal_string \"MasterBreeder::safeGovTokenTransfer: transfer failed\""
                            }
                          ],
                          "id": 6991,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "25333:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6994,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25333:80:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6995,
                      "nodeType": "ExpressionStatement",
                      "src": "25333:80:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6997,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeGovTokenTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6953,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6950,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6997,
                      "src": "24987:11:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6949,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "24987:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6952,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6997,
                      "src": "25000:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6951,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "25000:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "24986:30:15"
                },
                "returnParameters": {
                  "id": 6954,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "25026:0:15"
                },
                "scope": 7400,
                "src": "24957:463:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7008,
                  "nodeType": "Block",
                  "src": "25526:35:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7004,
                          "name": "devaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4752,
                          "src": "25536:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7005,
                          "name": "_devaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6999,
                          "src": "25546:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "25536:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7007,
                      "nodeType": "ExpressionStatement",
                      "src": "25536:18:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8d88a90e",
                "id": 7009,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7002,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7001,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "25511:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "25511:14:15"
                  }
                ],
                "name": "dev",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7000,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6999,
                      "mutability": "mutable",
                      "name": "_devaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7009,
                      "src": "25486:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6998,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "25486:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "25485:18:15"
                },
                "returnParameters": {
                  "id": 7003,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "25526:0:15"
                },
                "scope": 7400,
                "src": "25473:88:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7020,
                  "nodeType": "Block",
                  "src": "25669:51:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7016,
                          "name": "FINISH_BONUS_AT_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4780,
                          "src": "25679:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7017,
                          "name": "_newFinish",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7011,
                          "src": "25703:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25679:34:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7019,
                      "nodeType": "ExpressionStatement",
                      "src": "25679:34:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "245b211d",
                "id": 7021,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7014,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7013,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "25654:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "25654:14:15"
                  }
                ],
                "name": "bonusFinishUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7012,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7011,
                      "mutability": "mutable",
                      "name": "_newFinish",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7021,
                      "src": "25627:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7010,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "25627:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "25626:20:15"
                },
                "returnParameters": {
                  "id": 7015,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "25669:0:15"
                },
                "scope": 7400,
                "src": "25600:120:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7033,
                  "nodeType": "Block",
                  "src": "25832:47:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7029,
                          "name": "HALVING_AT_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4766,
                          "src": "25842:16:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7030,
                          "name": "_newHalving",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7024,
                          "src": "25861:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "25842:30:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7032,
                      "nodeType": "ExpressionStatement",
                      "src": "25842:30:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "354affb7",
                "id": 7034,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7027,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7026,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "25817:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "25817:14:15"
                  }
                ],
                "name": "halvingUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7025,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7024,
                      "mutability": "mutable",
                      "name": "_newHalving",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7034,
                      "src": "25780:28:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7022,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25780:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7023,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "25780:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "25779:30:15"
                },
                "returnParameters": {
                  "id": 7028,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "25832:0:15"
                },
                "scope": 7400,
                "src": "25757:122:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7045,
                  "nodeType": "Block",
                  "src": "25969:39:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7041,
                          "name": "liquidityaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4754,
                          "src": "25979:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7042,
                          "name": "_newLP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7036,
                          "src": "25995:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "25979:22:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7044,
                      "nodeType": "ExpressionStatement",
                      "src": "25979:22:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4dbf85ca",
                "id": 7046,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7039,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7038,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "25954:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "25954:14:15"
                  }
                ],
                "name": "lpUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7037,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7036,
                      "mutability": "mutable",
                      "name": "_newLP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7046,
                      "src": "25931:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7035,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "25931:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "25930:16:15"
                },
                "returnParameters": {
                  "id": 7040,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "25969:0:15"
                },
                "scope": 7400,
                "src": "25913:95:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7057,
                  "nodeType": "Block",
                  "src": "26098:38:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7053,
                          "name": "comfundaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4756,
                          "src": "26108:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7054,
                          "name": "_newCom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7048,
                          "src": "26122:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "26108:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7056,
                      "nodeType": "ExpressionStatement",
                      "src": "26108:21:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c749d614",
                "id": 7058,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7051,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7050,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26083:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26083:14:15"
                  }
                ],
                "name": "comUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7049,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7048,
                      "mutability": "mutable",
                      "name": "_newCom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7058,
                      "src": "26059:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7047,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "26059:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26058:17:15"
                },
                "returnParameters": {
                  "id": 7052,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26098:0:15"
                },
                "scope": 7400,
                "src": "26040:96:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7069,
                  "nodeType": "Block",
                  "src": "26234:42:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7065,
                          "name": "founderaddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4758,
                          "src": "26244:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7066,
                          "name": "_newFounder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7060,
                          "src": "26258:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "26244:25:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7068,
                      "nodeType": "ExpressionStatement",
                      "src": "26244:25:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "30fb8e0e",
                "id": 7070,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7063,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7062,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26219:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26219:14:15"
                  }
                ],
                "name": "founderUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7061,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7060,
                      "mutability": "mutable",
                      "name": "_newFounder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7070,
                      "src": "26191:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7059,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "26191:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26190:21:15"
                },
                "returnParameters": {
                  "id": 7064,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26234:0:15"
                },
                "scope": 7400,
                "src": "26168:108:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7081,
                  "nodeType": "Block",
                  "src": "26377:46:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7077,
                          "name": "REWARD_PER_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4760,
                          "src": "26387:16:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7078,
                          "name": "_newReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7072,
                          "src": "26406:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "26387:29:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7080,
                      "nodeType": "ExpressionStatement",
                      "src": "26387:29:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3d479cd5",
                "id": 7082,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7075,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7074,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26362:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26362:14:15"
                  }
                ],
                "name": "rewardUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7073,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7072,
                      "mutability": "mutable",
                      "name": "_newReward",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7082,
                      "src": "26335:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7071,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "26335:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26334:20:15"
                },
                "returnParameters": {
                  "id": 7076,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26377:0:15"
                },
                "scope": 7400,
                "src": "26313:110:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7094,
                  "nodeType": "Block",
                  "src": "26567:50:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7090,
                          "name": "REWARD_MULTIPLIER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4763,
                          "src": "26577:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7091,
                          "name": "_newMulReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7085,
                          "src": "26597:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "26577:33:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7093,
                      "nodeType": "ExpressionStatement",
                      "src": "26577:33:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "46664064",
                "id": 7095,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7088,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7087,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26548:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26548:14:15"
                  }
                ],
                "name": "rewardMulUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7086,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7085,
                      "mutability": "mutable",
                      "name": "_newMulReward",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7095,
                      "src": "26493:30:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26493:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7084,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "26493:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26492:32:15"
                },
                "returnParameters": {
                  "id": 7089,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26567:0:15"
                },
                "scope": 7400,
                "src": "26468:149:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7106,
                  "nodeType": "Block",
                  "src": "26722:53:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7102,
                          "name": "PERCENT_LOCK_BONUS_REWARD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4788,
                          "src": "26732:25:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7103,
                          "name": "_newlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7097,
                          "src": "26760:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "26732:36:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7105,
                      "nodeType": "ExpressionStatement",
                      "src": "26732:36:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "01b689c0",
                "id": 7107,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7100,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7099,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26707:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26707:14:15"
                  }
                ],
                "name": "lockUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7098,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7097,
                      "mutability": "mutable",
                      "name": "_newlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7107,
                      "src": "26682:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7096,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "26682:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26681:18:15"
                },
                "returnParameters": {
                  "id": 7101,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26722:0:15"
                },
                "scope": 7400,
                "src": "26662:113:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7118,
                  "nodeType": "Block",
                  "src": "26876:46:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7114,
                          "name": "PERCENT_FOR_DEV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4790,
                          "src": "26886:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7115,
                          "name": "_newdevlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7109,
                          "src": "26904:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "26886:29:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7117,
                      "nodeType": "ExpressionStatement",
                      "src": "26886:29:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b6066962",
                "id": 7119,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7112,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7111,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "26861:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "26861:14:15"
                  }
                ],
                "name": "lockdevUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7110,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7109,
                      "mutability": "mutable",
                      "name": "_newdevlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7119,
                      "src": "26833:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7108,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "26833:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26832:21:15"
                },
                "returnParameters": {
                  "id": 7113,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "26876:0:15"
                },
                "scope": 7400,
                "src": "26810:112:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7130,
                  "nodeType": "Block",
                  "src": "27020:44:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7126,
                          "name": "PERCENT_FOR_LP",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4792,
                          "src": "27030:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7127,
                          "name": "_newlplock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7121,
                          "src": "27047:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27030:27:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7129,
                      "nodeType": "ExpressionStatement",
                      "src": "27030:27:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f2ffc22c",
                "id": 7131,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7124,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7123,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "27005:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "27005:14:15"
                  }
                ],
                "name": "locklpUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7122,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7121,
                      "mutability": "mutable",
                      "name": "_newlplock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7131,
                      "src": "26978:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7120,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "26978:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "26977:20:15"
                },
                "returnParameters": {
                  "id": 7125,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "27020:0:15"
                },
                "scope": 7400,
                "src": "26956:108:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7142,
                  "nodeType": "Block",
                  "src": "27165:46:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7138,
                          "name": "PERCENT_FOR_COM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4794,
                          "src": "27175:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7139,
                          "name": "_newcomlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7133,
                          "src": "27193:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27175:29:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7141,
                      "nodeType": "ExpressionStatement",
                      "src": "27175:29:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c663baa6",
                "id": 7143,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7136,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7135,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "27150:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "27150:14:15"
                  }
                ],
                "name": "lockcomUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7134,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7133,
                      "mutability": "mutable",
                      "name": "_newcomlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7143,
                      "src": "27122:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7132,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27122:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "27121:21:15"
                },
                "returnParameters": {
                  "id": 7137,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "27165:0:15"
                },
                "scope": 7400,
                "src": "27099:112:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7154,
                  "nodeType": "Block",
                  "src": "27325:55:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7150,
                          "name": "PERCENT_FOR_FOUNDERS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4796,
                          "src": "27335:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7151,
                          "name": "_newfounderlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7145,
                          "src": "27358:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27335:38:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7153,
                      "nodeType": "ExpressionStatement",
                      "src": "27335:38:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "de988524",
                "id": 7155,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7148,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7147,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "27310:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "27310:14:15"
                  }
                ],
                "name": "lockfounderUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7146,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7145,
                      "mutability": "mutable",
                      "name": "_newfounderlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7155,
                      "src": "27278:23:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7144,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27278:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "27277:25:15"
                },
                "returnParameters": {
                  "id": 7149,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "27325:0:15"
                },
                "scope": 7400,
                "src": "27251:129:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7166,
                  "nodeType": "Block",
                  "src": "27482:44:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7162,
                          "name": "START_BLOCK",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4786,
                          "src": "27492:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7163,
                          "name": "_newstarblock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7157,
                          "src": "27506:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27492:27:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7165,
                      "nodeType": "ExpressionStatement",
                      "src": "27492:27:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "24b95c3e",
                "id": 7167,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7160,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7159,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "27467:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "27467:14:15"
                  }
                ],
                "name": "starblockUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7158,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7157,
                      "mutability": "mutable",
                      "name": "_newstarblock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7167,
                      "src": "27437:21:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7156,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27437:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "27436:23:15"
                },
                "returnParameters": {
                  "id": 7161,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "27482:0:15"
                },
                "scope": 7400,
                "src": "27412:114:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7212,
                  "nodeType": "Block",
                  "src": "27606:376:15",
                  "statements": [
                    {
                      "assignments": [
                        7175
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7175,
                          "mutability": "mutable",
                          "name": "multiplier",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7212,
                          "src": "27616:18:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7174,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "27616:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7184,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7177,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "27651:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 7178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "27651:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27666:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "27651:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7181,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "27669:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27669:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7176,
                          "name": "getMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5522,
                          "src": "27637:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) view returns (uint256)"
                          }
                        },
                        "id": 7183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27637:45:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "27616:66:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7185,
                          "name": "pid1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7169,
                          "src": "27696:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27704:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "27696:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7210,
                        "nodeType": "Block",
                        "src": "27777:199:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7207,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4820,
                                  "src": "27949:15:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 7199,
                                          "name": "poolInfo",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4799,
                                          "src": "27893:8:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$4746_storage_$dyn_storage",
                                            "typeString": "struct MasterBreeder.PoolInfo storage ref[] storage ref"
                                          }
                                        },
                                        "id": 7203,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7202,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 7200,
                                            "name": "pid1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7169,
                                            "src": "27902:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 7201,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "27909:1:15",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "27902:8:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "27893:18:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$4746_storage",
                                          "typeString": "struct MasterBreeder.PoolInfo storage ref"
                                        }
                                      },
                                      "id": 7204,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4741,
                                      "src": "27893:29:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7196,
                                          "name": "REWARD_PER_BLOCK",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4760,
                                          "src": "27850:16:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7194,
                                          "name": "multiplier",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7175,
                                          "src": "27814:10:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7195,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "27814:35:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 7197,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "27814:53:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "27814:78:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27814:109:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 369,
                                "src": "27814:134:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27814:151:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7173,
                            "id": 7209,
                            "nodeType": "Return",
                            "src": "27791:174:15"
                          }
                        ]
                      },
                      "id": 7211,
                      "nodeType": "IfStatement",
                      "src": "27692:284:15",
                      "trueBody": {
                        "id": 7193,
                        "nodeType": "Block",
                        "src": "27707:64:15",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7190,
                                  "name": "REWARD_PER_BLOCK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4760,
                                  "src": "27743:16:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7188,
                                  "name": "multiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7175,
                                  "src": "27728:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 347,
                                "src": "27728:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27728:32:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7173,
                            "id": 7192,
                            "nodeType": "Return",
                            "src": "27721:39:15"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "1d465c82",
                "id": 7213,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getNewRewardPerBlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7170,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7169,
                      "mutability": "mutable",
                      "name": "pid1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7213,
                      "src": "27562:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27562:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "27561:14:15"
                },
                "returnParameters": {
                  "id": 7173,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7172,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7213,
                      "src": "27597:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7171,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27597:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "27596:9:15"
                },
                "scope": 7400,
                "src": "27532:450:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7256,
                  "nodeType": "Block",
                  "src": "28051:334:15",
                  "statements": [
                    {
                      "assignments": [
                        7221
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7221,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7256,
                          "src": "28061:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7220,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "28061:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7228,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7222,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "28085:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 7224,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7223,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7215,
                            "src": "28094:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28085:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 7227,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7225,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "28100:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "28100:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28085:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "28061:50:15"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7229,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7221,
                            "src": "28125:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 7230,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lastWithdrawBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4719,
                          "src": "28125:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "28150:1:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "28125:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7254,
                        "nodeType": "Block",
                        "src": "28269:110:15",
                        "statements": [
                          {
                            "assignments": [
                              7245
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7245,
                                "mutability": "mutable",
                                "name": "estDelta",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7254,
                                "src": "28283:16:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7244,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28283:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7251,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7246,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "28302:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 7247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "28302:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7248,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7221,
                                  "src": "28317:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 7249,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "firstDepositBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4721,
                                "src": "28317:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "28302:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "28283:56:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7252,
                              "name": "estDelta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7245,
                              "src": "28360:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7219,
                            "id": 7253,
                            "nodeType": "Return",
                            "src": "28353:15:15"
                          }
                        ]
                      },
                      "id": 7255,
                      "nodeType": "IfStatement",
                      "src": "28121:258:15",
                      "trueBody": {
                        "id": 7243,
                        "nodeType": "Block",
                        "src": "28153:110:15",
                        "statements": [
                          {
                            "assignments": [
                              7234
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7234,
                                "mutability": "mutable",
                                "name": "estDelta",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7243,
                                "src": "28167:16:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7233,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28167:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7240,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7235,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "28186:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 7236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "28186:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7237,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7221,
                                  "src": "28201:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                                    "typeString": "struct MasterBreeder.UserInfo storage pointer"
                                  }
                                },
                                "id": 7238,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastWithdrawBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4719,
                                "src": "28201:22:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "28186:37:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "28167:56:15"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7241,
                              "name": "estDelta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7234,
                              "src": "28244:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7219,
                            "id": 7242,
                            "nodeType": "Return",
                            "src": "28237:15:15"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "09ae4d2c",
                "id": 7257,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "userDelta",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7216,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7215,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7257,
                      "src": "28007:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7214,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28007:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "28006:14:15"
                },
                "returnParameters": {
                  "id": 7219,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7218,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7257,
                      "src": "28042:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7217,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28042:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "28041:9:15"
                },
                "scope": 7400,
                "src": "27988:397:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7282,
                  "nodeType": "Block",
                  "src": "28514:103:15",
                  "statements": [
                    {
                      "assignments": [
                        7269
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7269,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7282,
                          "src": "28524:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7268,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "28524:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7275,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7270,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "28548:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 7272,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7271,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7259,
                            "src": "28557:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28548:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 7274,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7273,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7261,
                          "src": "28563:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28548:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "28524:45:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7276,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7269,
                            "src": "28579:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 7278,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "lastWithdrawBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4719,
                          "src": "28579:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7279,
                          "name": "_block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7263,
                          "src": "28604:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "28579:31:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7281,
                      "nodeType": "ExpressionStatement",
                      "src": "28579:31:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6066debd",
                "id": 7283,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7266,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7265,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "28497:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "28497:16:15"
                  }
                ],
                "name": "reviseWithdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7264,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7259,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7283,
                      "src": "28424:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7258,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28424:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7261,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7283,
                      "src": "28446:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7260,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "28446:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7263,
                      "mutability": "mutable",
                      "name": "_block",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7283,
                      "src": "28469:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28469:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "28414:75:15"
                },
                "returnParameters": {
                  "id": 7267,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "28514:0:15"
                },
                "scope": 7400,
                "src": "28391:226:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7308,
                  "nodeType": "Block",
                  "src": "28745:103:15",
                  "statements": [
                    {
                      "assignments": [
                        7295
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7295,
                          "mutability": "mutable",
                          "name": "user",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7308,
                          "src": "28755:21:15",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                            "typeString": "struct MasterBreeder.UserInfo"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7294,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4726,
                            "src": "28755:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7301,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7296,
                            "name": "userInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4809,
                            "src": "28779:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$_$",
                              "typeString": "mapping(uint256 => mapping(address => struct MasterBreeder.UserInfo storage ref))"
                            }
                          },
                          "id": 7298,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7297,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7285,
                            "src": "28788:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28779:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4726_storage_$",
                            "typeString": "mapping(address => struct MasterBreeder.UserInfo storage ref)"
                          }
                        },
                        "id": 7300,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7299,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7287,
                          "src": "28794:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28779:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4726_storage",
                          "typeString": "struct MasterBreeder.UserInfo storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "28755:45:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7302,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7295,
                            "src": "28810:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4726_storage_ptr",
                              "typeString": "struct MasterBreeder.UserInfo storage pointer"
                            }
                          },
                          "id": 7304,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "firstDepositBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4721,
                          "src": "28810:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7305,
                          "name": "_block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7289,
                          "src": "28835:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "28810:31:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7307,
                      "nodeType": "ExpressionStatement",
                      "src": "28810:31:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "82386d58",
                "id": 7309,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7292,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7291,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "28728:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "28728:16:15"
                  }
                ],
                "name": "reviseDeposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7290,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7285,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "28655:12:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7284,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28655:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7287,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "28677:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7286,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "28677:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7289,
                      "mutability": "mutable",
                      "name": "_block",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "28700:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7288,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "28700:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "28645:75:15"
                },
                "returnParameters": {
                  "id": 7293,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "28745:0:15"
                },
                "scope": 7400,
                "src": "28623:225:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7321,
                  "nodeType": "Block",
                  "src": "28953:52:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7317,
                          "name": "blockDeltaStartStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4769,
                          "src": "28963:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7318,
                          "name": "_blockStarts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7312,
                          "src": "28986:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "28963:35:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7320,
                      "nodeType": "ExpressionStatement",
                      "src": "28963:35:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "847bdaa4",
                "id": 7322,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7315,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7314,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "28932:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "28932:16:15"
                  }
                ],
                "name": "setStageStarts",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7313,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7312,
                      "mutability": "mutable",
                      "name": "_blockStarts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7322,
                      "src": "28878:29:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28878:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7311,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "28878:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "28877:31:15"
                },
                "returnParameters": {
                  "id": 7316,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "28953:0:15"
                },
                "scope": 7400,
                "src": "28854:151:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7334,
                  "nodeType": "Block",
                  "src": "29086:48:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7330,
                          "name": "blockDeltaEndStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4772,
                          "src": "29096:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7331,
                          "name": "_blockEnds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7325,
                          "src": "29117:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "29096:31:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7333,
                      "nodeType": "ExpressionStatement",
                      "src": "29096:31:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4af0e3e1",
                "id": 7335,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7328,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7327,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29069:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29069:16:15"
                  }
                ],
                "name": "setStageEnds",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7326,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7325,
                      "mutability": "mutable",
                      "name": "_blockEnds",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7335,
                      "src": "29033:27:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29033:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7324,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "29033:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29032:29:15"
                },
                "returnParameters": {
                  "id": 7329,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29086:0:15"
                },
                "scope": 7400,
                "src": "29011:123:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7347,
                  "nodeType": "Block",
                  "src": "29237:41:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7343,
                          "name": "userFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4775,
                          "src": "29247:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7344,
                          "name": "_userFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7338,
                          "src": "29262:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "29247:24:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7346,
                      "nodeType": "ExpressionStatement",
                      "src": "29247:24:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2a7b0107",
                "id": 7348,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7341,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7340,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29216:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29216:16:15"
                  }
                ],
                "name": "setUserFeeStage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7339,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7338,
                      "mutability": "mutable",
                      "name": "_userFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7348,
                      "src": "29165:26:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29165:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7337,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "29165:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29164:28:15"
                },
                "returnParameters": {
                  "id": 7342,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29237:0:15"
                },
                "scope": 7400,
                "src": "29140:138:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7360,
                  "nodeType": "Block",
                  "src": "29359:39:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7356,
                          "name": "devFeeStage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4778,
                          "src": "29369:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7357,
                          "name": "_devFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7351,
                          "src": "29383:8:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "29369:22:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 7359,
                      "nodeType": "ExpressionStatement",
                      "src": "29369:22:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8cc883ce",
                "id": 7361,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7354,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7353,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29342:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29342:16:15"
                  }
                ],
                "name": "setDevFeeStage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7352,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7351,
                      "mutability": "mutable",
                      "name": "_devFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7361,
                      "src": "29308:25:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29308:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7350,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "29308:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29307:27:15"
                },
                "returnParameters": {
                  "id": 7355,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29359:0:15"
                },
                "scope": 7400,
                "src": "29284:114:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7372,
                  "nodeType": "Block",
                  "src": "29471:40:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7368,
                          "name": "devDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4784,
                          "src": "29481:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7369,
                          "name": "_devDepFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7363,
                          "src": "29493:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "29481:23:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7371,
                      "nodeType": "ExpressionStatement",
                      "src": "29481:23:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fb075433",
                "id": 7373,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7366,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7365,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29454:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29454:16:15"
                  }
                ],
                "name": "setDevDepFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7364,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7363,
                      "mutability": "mutable",
                      "name": "_devDepFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7373,
                      "src": "29426:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7362,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29426:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29425:21:15"
                },
                "returnParameters": {
                  "id": 7367,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29471:0:15"
                },
                "scope": 7400,
                "src": "29404:107:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7384,
                  "nodeType": "Block",
                  "src": "29585:41:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7380,
                          "name": "userDepFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4782,
                          "src": "29595:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7381,
                          "name": "_usrDepFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7375,
                          "src": "29608:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "29595:24:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7383,
                      "nodeType": "ExpressionStatement",
                      "src": "29595:24:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "7c39c9c9",
                "id": 7385,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7378,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7377,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29568:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29568:16:15"
                  }
                ],
                "name": "setUserDepFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7376,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7375,
                      "mutability": "mutable",
                      "name": "_usrDepFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7385,
                      "src": "29540:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7374,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29540:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29539:21:15"
                },
                "returnParameters": {
                  "id": 7379,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29585:0:15"
                },
                "scope": 7400,
                "src": "29517:109:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7398,
                  "nodeType": "Block",
                  "src": "29706:54:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7395,
                            "name": "_newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7387,
                            "src": "29743:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7392,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4748,
                            "src": "29716:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GovernanceToken_$3987",
                              "typeString": "contract GovernanceToken"
                            }
                          },
                          "id": 7394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferOwnership",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 108,
                          "src": "29716:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address) external"
                          }
                        },
                        "id": 7396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29716:37:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7397,
                      "nodeType": "ExpressionStatement",
                      "src": "29716:37:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "eda67048",
                "id": 7399,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7390,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7389,
                      "name": "onlyAuthorized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2135,
                      "src": "29689:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "29689:16:15"
                  }
                ],
                "name": "reclaimTokenOwnership",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7388,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7387,
                      "mutability": "mutable",
                      "name": "_newOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7399,
                      "src": "29663:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7386,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "29663:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "29662:19:15"
                },
                "returnParameters": {
                  "id": 7391,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "29706:0:15"
                },
                "scope": 7400,
                "src": "29632:128:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 7401,
            "src": "788:28974:15"
          }
        ],
        "src": "33:29730:15"
      }
    },
    "contracts/Pit.sol": {
      "id": 16,
      "AST": {
        "absolutePath": "contracts/Pit.sol",
        "exportedSymbols": {
          "Pit": [
            7537
          ]
        },
        "id": 7538,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7402,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:16"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 7403,
            "nodeType": "ImportDirective",
            "scope": 7538,
            "sourceUnit": 1046,
            "src": "58:56:16",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "id": 7404,
            "nodeType": "ImportDirective",
            "scope": 7538,
            "sourceUnit": 968,
            "src": "115:55:16",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 7405,
            "nodeType": "ImportDirective",
            "scope": 7538,
            "sourceUnit": 465,
            "src": "171:51:16",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 7406,
                  "name": "ERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 967,
                  "src": "461:5:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$967",
                    "typeString": "contract ERC20"
                  }
                },
                "id": 7407,
                "nodeType": "InheritanceSpecifier",
                "src": "461:5:16"
              }
            ],
            "contractDependencies": [
              967,
              1045,
              1577
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7537,
            "linearizedBaseContracts": [
              7537,
              967,
              1045,
              1577
            ],
            "name": "Pit",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 7410,
                "libraryName": {
                  "contractScope": null,
                  "id": 7408,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "479:8:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "473:27:16",
                "typeName": {
                  "id": 7409,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "492:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "05268cff",
                "id": 7412,
                "mutability": "mutable",
                "name": "govToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 7537,
                "src": "505:22:16",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$1045",
                  "typeString": "contract IERC20"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7411,
                  "name": "IERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1045,
                  "src": "505:6:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$1045",
                    "typeString": "contract IERC20"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7429,
                  "nodeType": "Block",
                  "src": "698:37:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7425,
                          "name": "govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7412,
                          "src": "708:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$1045",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7426,
                          "name": "_govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7418,
                          "src": "719:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$1045",
                            "typeString": "contract IERC20"
                          }
                        },
                        "src": "708:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 7428,
                      "nodeType": "ExpressionStatement",
                      "src": "708:20:16"
                    }
                  ]
                },
                "documentation": null,
                "id": 7430,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7421,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7414,
                        "src": "682:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7422,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7416,
                        "src": "689:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "id": 7423,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7420,
                      "name": "ERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 967,
                      "src": "676:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ERC20_$967_$",
                        "typeString": "type(contract ERC20)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "676:21:16"
                  }
                ],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7419,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7414,
                      "mutability": "mutable",
                      "name": "_name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7430,
                      "src": "590:19:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7413,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "590:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7416,
                      "mutability": "mutable",
                      "name": "_symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7430,
                      "src": "617:21:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7415,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "617:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7418,
                      "mutability": "mutable",
                      "name": "_govToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7430,
                      "src": "646:16:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7417,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "646:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "582:86:16"
                },
                "returnParameters": {
                  "id": 7424,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "698:0:16"
                },
                "scope": 7537,
                "src": "571:164:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7494,
                  "nodeType": "Block",
                  "src": "893:923:16",
                  "statements": [
                    {
                      "assignments": [
                        7436
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7436,
                          "mutability": "mutable",
                          "name": "totalGovernanceToken",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7494,
                          "src": "972:28:16",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7435,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "972:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7444,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7441,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "1030:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Pit_$7537",
                                  "typeString": "contract Pit"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Pit_$7537",
                                  "typeString": "contract Pit"
                                }
                              ],
                              "id": 7440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1022:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7439,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1022:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1022:13:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7437,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7412,
                            "src": "1003:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 7438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 984,
                          "src": "1003:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 7443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1003:33:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "972:64:16"
                    },
                    {
                      "assignments": [
                        7446
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7446,
                          "mutability": "mutable",
                          "name": "totalShares",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7494,
                          "src": "1106:19:16",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7445,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1106:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7449,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7447,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 553,
                          "src": "1128:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 7448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1128:13:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1106:35:16"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7450,
                            "name": "totalShares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7446,
                            "src": "1230:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1245:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1230:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7453,
                            "name": "totalGovernanceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7436,
                            "src": "1250:20:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1274:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1250:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1230:45:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7480,
                        "nodeType": "Block",
                        "src": "1564:127:16",
                        "statements": [
                          {
                            "assignments": [
                              7465
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7465,
                                "mutability": "mutable",
                                "name": "what",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7480,
                                "src": "1578:12:16",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7464,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1578:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7473,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7471,
                                  "name": "totalGovernanceToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7436,
                                  "src": "1622:20:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7468,
                                      "name": "totalShares",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7446,
                                      "src": "1605:11:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7466,
                                      "name": "_amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7432,
                                      "src": "1593:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "1593:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1593:24:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 369,
                                "src": "1593:28:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1593:50:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1578:65:16"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7475,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1663:3:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7476,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1663:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7477,
                                  "name": "what",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7465,
                                  "src": "1675:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7474,
                                "name": "_mint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 843,
                                "src": "1657:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256)"
                                }
                              },
                              "id": 7478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1657:23:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7479,
                            "nodeType": "ExpressionStatement",
                            "src": "1657:23:16"
                          }
                        ]
                      },
                      "id": 7481,
                      "nodeType": "IfStatement",
                      "src": "1226:465:16",
                      "trueBody": {
                        "id": 7463,
                        "nodeType": "Block",
                        "src": "1277:51:16",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7458,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1297:3:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1297:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7460,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7432,
                                  "src": "1309:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7457,
                                "name": "_mint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 843,
                                "src": "1291:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256)"
                                }
                              },
                              "id": 7461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1291:26:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7462,
                            "nodeType": "ExpressionStatement",
                            "src": "1291:26:16"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7485,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1774:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1774:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7489,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "1794:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Pit_$7537",
                                  "typeString": "contract Pit"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Pit_$7537",
                                  "typeString": "contract Pit"
                                }
                              ],
                              "id": 7488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1786:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7487,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1786:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1786:13:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7491,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7432,
                            "src": "1801:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7482,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7412,
                            "src": "1752:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 7484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1026,
                          "src": "1752:21:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1752:57:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7493,
                      "nodeType": "ExpressionStatement",
                      "src": "1752:57:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a59f3e0c",
                "id": 7495,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "enter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7433,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7432,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7495,
                      "src": "869:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7431,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "869:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "868:17:16"
                },
                "returnParameters": {
                  "id": 7434,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "893:0:16"
                },
                "scope": 7537,
                "src": "854:962:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7535,
                  "nodeType": "Block",
                  "src": "1985:373:16",
                  "statements": [
                    {
                      "assignments": [
                        7501
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7501,
                          "mutability": "mutable",
                          "name": "totalShares",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7535,
                          "src": "2055:19:16",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7500,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2055:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7504,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7502,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 553,
                          "src": "2077:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 7503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2077:13:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2055:35:16"
                    },
                    {
                      "assignments": [
                        7506
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7506,
                          "mutability": "mutable",
                          "name": "what",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7535,
                          "src": "2182:12:16",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7505,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2182:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7520,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7518,
                            "name": "totalShares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7501,
                            "src": "2259:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7513,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2247:4:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Pit_$7537",
                                          "typeString": "contract Pit"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Pit_$7537",
                                          "typeString": "contract Pit"
                                        }
                                      ],
                                      "id": 7512,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2239:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7511,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2239:7:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 7514,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2239:13:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7509,
                                    "name": "govToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7412,
                                    "src": "2220:8:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7510,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 984,
                                  "src": "2220:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 7515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2220:33:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7507,
                                "name": "_share",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7497,
                                "src": "2209:6:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 347,
                              "src": "2209:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2209:45:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 369,
                          "src": "2209:49:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2209:62:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2182:89:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7522,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2287:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2287:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7524,
                            "name": "_share",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7497,
                            "src": "2299:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7521,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 899,
                          "src": "2281:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 7525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2281:25:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7526,
                      "nodeType": "ExpressionStatement",
                      "src": "2281:25:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7530,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2334:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2334:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7532,
                            "name": "what",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7506,
                            "src": "2346:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7527,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7412,
                            "src": "2316:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 7529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 994,
                          "src": "2316:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2316:35:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7534,
                      "nodeType": "ExpressionStatement",
                      "src": "2316:35:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "67dfd4c9",
                "id": 7536,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "leave",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7498,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7497,
                      "mutability": "mutable",
                      "name": "_share",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7536,
                      "src": "1962:14:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7496,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1962:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1961:16:16"
                },
                "returnParameters": {
                  "id": 7499,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1985:0:16"
                },
                "scope": 7537,
                "src": "1947:411:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 7538,
            "src": "445:1915:16"
          }
        ],
        "src": "33:2328:16"
      }
    },
    "contracts/PitBreeder.sol": {
      "id": 17,
      "AST": {
        "absolutePath": "contracts/PitBreeder.sol",
        "exportedSymbols": {
          "PitBreeder": [
            8256
          ]
        },
        "id": 8257,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7539,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "48:23:17"
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
            "file": "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
            "id": 7540,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 11736,
            "src": "73:68:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
            "file": "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
            "id": 7541,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 11978,
            "src": "142:65:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol",
            "file": "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol",
            "id": 7542,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 11673,
            "src": "208:66:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 7543,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 465,
            "src": "276:51:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
            "id": 7544,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 1259,
            "src": "328:59:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
            "file": "@openzeppelin/contracts/access/Ownable.sol",
            "id": 7545,
            "nodeType": "ImportDirective",
            "scope": 8257,
            "sourceUnit": 110,
            "src": "388:52:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 7546,
                  "name": "Ownable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 109,
                  "src": "680:7:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Ownable_$109",
                    "typeString": "contract Ownable"
                  }
                },
                "id": 7547,
                "nodeType": "InheritanceSpecifier",
                "src": "680:7:17"
              }
            ],
            "contractDependencies": [
              109,
              1577
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8256,
            "linearizedBaseContracts": [
              8256,
              109,
              1577
            ],
            "name": "PitBreeder",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 7550,
                "libraryName": {
                  "contractScope": null,
                  "id": 7548,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "700:8:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "694:27:17",
                "typeName": {
                  "id": 7549,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "713:7:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "id": 7553,
                "libraryName": {
                  "contractScope": null,
                  "id": 7551,
                  "name": "SafeERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1258,
                  "src": "732:9:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeERC20_$1258",
                    "typeString": "library SafeERC20"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "726:27:17",
                "typeName": {
                  "contractScope": null,
                  "id": 7552,
                  "name": "IERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1045,
                  "src": "746:6:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$1045",
                    "typeString": "contract IERC20"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 7555,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8256,
                "src": "778:42:17",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                  "typeString": "contract IUniswapV2Factory"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7554,
                  "name": "IUniswapV2Factory",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11735,
                  "src": "778:17:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                    "typeString": "contract IUniswapV2Factory"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f03c7c6e",
                "id": 7557,
                "mutability": "immutable",
                "name": "pit",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8256,
                "src": "894:28:17",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 7556,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "894:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 7559,
                "mutability": "immutable",
                "name": "govToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8256,
                "src": "996:34:17",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 7558,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "996:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 7561,
                "mutability": "immutable",
                "name": "weth",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8256,
                "src": "1104:30:17",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 7560,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1104:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 7565,
                "mutability": "mutable",
                "name": "_bridges",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8256,
                "src": "1209:45:17",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                  "typeString": "mapping(address => address)"
                },
                "typeName": {
                  "id": 7564,
                  "keyType": {
                    "id": 7562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1217:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1209:27:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "valueType": {
                    "id": 7563,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1228:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 7571,
                "name": "LogBridgeSet",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7570,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7567,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7571,
                      "src": "1294:21:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7566,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1294:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7569,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "bridge",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7571,
                      "src": "1317:22:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7568,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1317:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1293:47:17"
                },
                "src": "1275:66:17"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 7585,
                "name": "LogConvert",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7584,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7573,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "server",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1386:22:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7572,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1386:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7575,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1418:22:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7574,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1418:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7577,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1450:22:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7576,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1450:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7579,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1482:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7578,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1482:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7581,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1507:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7580,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1507:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7583,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amountGovToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7585,
                      "src": "1532:22:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7582,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1532:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1376:184:17"
                },
                "src": "1360:201:17"
              },
              {
                "body": {
                  "id": 7614,
                  "nodeType": "Block",
                  "src": "1690:126:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7596,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7555,
                          "src": "1700:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                            "typeString": "contract IUniswapV2Factory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7598,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7587,
                              "src": "1728:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7597,
                            "name": "IUniswapV2Factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11735,
                            "src": "1710:17:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$11735_$",
                              "typeString": "type(contract IUniswapV2Factory)"
                            }
                          },
                          "id": 7599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1710:27:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                            "typeString": "contract IUniswapV2Factory"
                          }
                        },
                        "src": "1700:37:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                          "typeString": "contract IUniswapV2Factory"
                        }
                      },
                      "id": 7601,
                      "nodeType": "ExpressionStatement",
                      "src": "1700:37:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7604,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7602,
                          "name": "pit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7557,
                          "src": "1747:3:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7603,
                          "name": "_pit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7589,
                          "src": "1753:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1747:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7605,
                      "nodeType": "ExpressionStatement",
                      "src": "1747:10:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7606,
                          "name": "govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7559,
                          "src": "1767:8:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7607,
                          "name": "_govToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7591,
                          "src": "1778:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1767:20:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7609,
                      "nodeType": "ExpressionStatement",
                      "src": "1767:20:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7610,
                          "name": "weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7561,
                          "src": "1797:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7611,
                          "name": "_weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7593,
                          "src": "1804:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1797:12:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7613,
                      "nodeType": "ExpressionStatement",
                      "src": "1797:12:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7615,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7594,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7587,
                      "mutability": "mutable",
                      "name": "_factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7615,
                      "src": "1588:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7586,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1588:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7589,
                      "mutability": "mutable",
                      "name": "_pit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7615,
                      "src": "1614:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7588,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1614:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7591,
                      "mutability": "mutable",
                      "name": "_govToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7615,
                      "src": "1636:17:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7590,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1636:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7593,
                      "mutability": "mutable",
                      "name": "_weth",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7615,
                      "src": "1663:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7592,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1663:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1578:104:17"
                },
                "returnParameters": {
                  "id": 7595,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1690:0:17"
                },
                "scope": 8256,
                "src": "1567:249:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7640,
                  "nodeType": "Block",
                  "src": "1933:114:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7622,
                          "name": "bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7620,
                          "src": "1943:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7623,
                            "name": "_bridges",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "1952:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 7625,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7624,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7617,
                            "src": "1961:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1952:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1943:24:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7627,
                      "nodeType": "ExpressionStatement",
                      "src": "1943:24:17"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7628,
                          "name": "bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7620,
                          "src": "1981:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1999:1:17",
                              "subdenomination": null,
                              "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": 7630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1991:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 7629,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1991:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1991:10:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1981:20:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7639,
                      "nodeType": "IfStatement",
                      "src": "1977:64:17",
                      "trueBody": {
                        "id": 7638,
                        "nodeType": "Block",
                        "src": "2003:38:17",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7634,
                                "name": "bridge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7620,
                                "src": "2017:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7635,
                                "name": "weth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7561,
                                "src": "2026:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2017:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 7637,
                            "nodeType": "ExpressionStatement",
                            "src": "2017:13:17"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a761a939",
                "id": 7641,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "bridgeFor",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7618,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7617,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7641,
                      "src": "1881:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7616,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1881:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1880:15:17"
                },
                "returnParameters": {
                  "id": 7621,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7620,
                      "mutability": "mutable",
                      "name": "bridge",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7641,
                      "src": "1917:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7619,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1917:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1916:16:17"
                },
                "scope": 8256,
                "src": "1862:185:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7676,
                  "nodeType": "Block",
                  "src": "2162:257:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 7661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7651,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7643,
                                  "src": "2211:5:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7652,
                                  "name": "govToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7559,
                                  "src": "2220:8:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2211:17:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7654,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7643,
                                  "src": "2232:5:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7655,
                                  "name": "weth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7561,
                                  "src": "2241:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2232:13:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2211:34:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7658,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7643,
                                "src": "2249:5:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7659,
                                "name": "bridge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7645,
                                "src": "2258:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2249:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2211:53:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "506974427265656465723a20496e76616c696420627269646765",
                            "id": 7662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2278:28:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_56253354148d5440fc5e3d55398b0b8552c5798fc62339c05aff9f6a32735a58",
                              "typeString": "literal_string \"PitBreeder: Invalid bridge\""
                            },
                            "value": "PitBreeder: Invalid bridge"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_56253354148d5440fc5e3d55398b0b8552c5798fc62339c05aff9f6a32735a58",
                              "typeString": "literal_string \"PitBreeder: Invalid bridge\""
                            }
                          ],
                          "id": 7650,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2190:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2190:126:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7664,
                      "nodeType": "ExpressionStatement",
                      "src": "2190:126:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7665,
                            "name": "_bridges",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "2346:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 7667,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7666,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7643,
                            "src": "2355:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2346:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7668,
                          "name": "bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7645,
                          "src": "2364:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2346:24:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 7670,
                      "nodeType": "ExpressionStatement",
                      "src": "2346:24:17"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7672,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7643,
                            "src": "2398:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7673,
                            "name": "bridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7645,
                            "src": "2405:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7671,
                          "name": "LogBridgeSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7571,
                          "src": "2385:12:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 7674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2385:27:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7675,
                      "nodeType": "EmitStatement",
                      "src": "2380:32:17"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9d22ae8c",
                "id": 7677,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 7648,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7647,
                      "name": "onlyOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 58,
                      "src": "2152:9:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2152:9:17"
                  }
                ],
                "name": "setBridge",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7646,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7643,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7677,
                      "src": "2112:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7642,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2112:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7645,
                      "mutability": "mutable",
                      "name": "bridge",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7677,
                      "src": "2127:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7644,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2127:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2111:31:17"
                },
                "returnParameters": {
                  "id": 7649,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2162:0:17"
                },
                "scope": 8256,
                "src": "2093:326:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 7689,
                  "nodeType": "Block",
                  "src": "2588:188:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 7684,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7680,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2706:3:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 7681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2706:10:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7682,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "2720:2:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 7683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2720:9:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2706:23:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "506974427265656465723a206d7573742075736520454f41",
                            "id": 7685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2731:26:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_676fc84da93483067e4914626319c8a02b05921c777911356d2fb92464dcd1cf",
                              "typeString": "literal_string \"PitBreeder: must use EOA\""
                            },
                            "value": "PitBreeder: must use EOA"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_676fc84da93483067e4914626319c8a02b05921c777911356d2fb92464dcd1cf",
                              "typeString": "literal_string \"PitBreeder: must use EOA\""
                            }
                          ],
                          "id": 7679,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2698:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2698:60:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7687,
                      "nodeType": "ExpressionStatement",
                      "src": "2698:60:17"
                    },
                    {
                      "id": 7688,
                      "nodeType": "PlaceholderStatement",
                      "src": "2768:1:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7690,
                "name": "onlyEOA",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7678,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2585:2:17"
                },
                "src": "2569:207:17",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7704,
                  "nodeType": "Block",
                  "src": "3327:41:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7700,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7692,
                            "src": "3346:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7701,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7694,
                            "src": "3354:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7699,
                          "name": "_convert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7836,
                          "src": "3337:8:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 7702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3337:24:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7703,
                      "nodeType": "ExpressionStatement",
                      "src": "3337:24:17"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bd1b820c",
                "id": 7705,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7697,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7696,
                      "name": "onlyEOA",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7690,
                      "src": "3317:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3317:9:17"
                  }
                ],
                "name": "convert",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7695,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7692,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7705,
                      "src": "3276:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7691,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3276:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7694,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7705,
                      "src": "3292:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7693,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3292:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3275:32:17"
                },
                "returnParameters": {
                  "id": 7698,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3327:0:17"
                },
                "scope": 8256,
                "src": "3259:109:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 7742,
                  "nodeType": "Block",
                  "src": "3594:231:17",
                  "statements": [
                    {
                      "assignments": [
                        7717
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7717,
                          "mutability": "mutable",
                          "name": "len",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7742,
                          "src": "3693:11:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7716,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3693:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7720,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7718,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7708,
                          "src": "3707:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                            "typeString": "address[] calldata"
                          }
                        },
                        "id": 7719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3707:13:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3693:27:17"
                    },
                    {
                      "body": {
                        "id": 7740,
                        "nodeType": "Block",
                        "src": "3764:55:17",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7732,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7708,
                                    "src": "3787:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 7734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7733,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7722,
                                    "src": "3794:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3787:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7735,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7711,
                                    "src": "3798:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 7737,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7736,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7722,
                                    "src": "3805:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3798:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7731,
                                "name": "_convert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7836,
                                "src": "3778:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (address,address)"
                                }
                              },
                              "id": 7738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3778:30:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7739,
                            "nodeType": "ExpressionStatement",
                            "src": "3778:30:17"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7725,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7722,
                          "src": "3750:1:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7726,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7717,
                          "src": "3754:3:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3750:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7741,
                      "initializationExpression": {
                        "assignments": [
                          7722
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7722,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7741,
                            "src": "3735:9:17",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7721,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3735:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7724,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3747:1:17",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3735:13:17"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "3759:3:17",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 7728,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7722,
                            "src": "3759:1:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7730,
                        "nodeType": "ExpressionStatement",
                        "src": "3759:3:17"
                      },
                      "nodeType": "ForStatement",
                      "src": "3730:89:17"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "303e6aa4",
                "id": 7743,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 7714,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 7713,
                      "name": "onlyEOA",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7690,
                      "src": "3584:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3584:9:17"
                  }
                ],
                "name": "convertMultiple",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7712,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7708,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7743,
                      "src": "3508:25:17",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7706,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3508:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7707,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3508:9:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7711,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7743,
                      "src": "3543:25:17",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3543:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7710,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3543:9:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3498:76:17"
                },
                "returnParameters": {
                  "id": 7715,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3594:0:17"
                },
                "scope": 8256,
                "src": "3474:351:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 7835,
                  "nodeType": "Block",
                  "src": "3929:795:17",
                  "statements": [
                    {
                      "assignments": [
                        7751
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7751,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7835,
                          "src": "3986:19:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                            "typeString": "contract IUniswapV2Pair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7750,
                            "name": "IUniswapV2Pair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 11977,
                            "src": "3986:14:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7759,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7755,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7745,
                                "src": "4039:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7756,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7747,
                                "src": "4047:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7753,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7555,
                                "src": "4023:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                                  "typeString": "contract IUniswapV2Factory"
                                }
                              },
                              "id": 7754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPair",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11703,
                              "src": "4023:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address) view external returns (address)"
                              }
                            },
                            "id": 7757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4023:31:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7752,
                          "name": "IUniswapV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11977,
                          "src": "4008:14:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$11977_$",
                            "typeString": "type(contract IUniswapV2Pair)"
                          }
                        },
                        "id": 7758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4008:47:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                          "typeString": "contract IUniswapV2Pair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3986:69:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 7769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7763,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7751,
                                  "src": "4081:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                ],
                                "id": 7762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4073:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7761,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4073:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 7764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4073:13:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 7767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4098:1:17",
                                  "subdenomination": null,
                                  "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": 7766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4090:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7765,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4090:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 7768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4090:10:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "4073:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "506974427265656465723a20496e76616c69642070616972",
                            "id": 7770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4102:26:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1b571230c08462118167866a4f05b10f525f57dc4e8ab65216b09905e705dada",
                              "typeString": "literal_string \"PitBreeder: Invalid pair\""
                            },
                            "value": "PitBreeder: Invalid pair"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1b571230c08462118167866a4f05b10f525f57dc4e8ab65216b09905e705dada",
                              "typeString": "literal_string \"PitBreeder: Invalid pair\""
                            }
                          ],
                          "id": 7760,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4065:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4065:64:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7772,
                      "nodeType": "ExpressionStatement",
                      "src": "4065:64:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7782,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7751,
                                "src": "4262:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                  "typeString": "contract IUniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                  "typeString": "contract IUniswapV2Pair"
                                }
                              ],
                              "id": 7781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4254:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7780,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4254:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4254:13:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7788,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "4304:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                      "typeString": "contract PitBreeder"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                      "typeString": "contract PitBreeder"
                                    }
                                  ],
                                  "id": 7787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4296:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7786,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4296:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4296:13:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7784,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7751,
                                "src": "4281:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                  "typeString": "contract IUniswapV2Pair"
                                }
                              },
                              "id": 7785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11780,
                              "src": "4281:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 7790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4281:29:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7776,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7751,
                                    "src": "4221:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                      "typeString": "contract IUniswapV2Pair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                      "typeString": "contract IUniswapV2Pair"
                                    }
                                  ],
                                  "id": 7775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4213:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7774,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4213:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4213:13:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 7773,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1045,
                              "src": "4206:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 7778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4206:21:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$1045",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 7779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1079,
                          "src": "4206:34:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                            "typeString": "function (contract IERC20,address,uint256)"
                          }
                        },
                        "id": 7791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4206:114:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7792,
                      "nodeType": "ExpressionStatement",
                      "src": "4206:114:17"
                    },
                    {
                      "assignments": [
                        7794,
                        7796
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7794,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7835,
                          "src": "4354:15:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7793,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4354:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7796,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7835,
                          "src": "4371:15:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7795,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4371:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7804,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7801,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4408:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                  "typeString": "contract PitBreeder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                  "typeString": "contract PitBreeder"
                                }
                              ],
                              "id": 7800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4400:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7799,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4400:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4400:13:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7797,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7751,
                            "src": "4390:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "id": 7798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11950,
                          "src": "4390:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256,uint256)"
                          }
                        },
                        "id": 7803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4390:24:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4353:61:17"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7805,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7745,
                          "src": "4428:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7806,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7751,
                              "src": "4438:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 7807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11905,
                            "src": "4438:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 7808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4438:13:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4428:23:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7819,
                      "nodeType": "IfStatement",
                      "src": "4424:93:17",
                      "trueBody": {
                        "id": 7818,
                        "nodeType": "Block",
                        "src": "4453:64:17",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7810,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7794,
                                    "src": "4468:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7811,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7796,
                                    "src": "4477:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7812,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "4467:18:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7813,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7796,
                                    "src": "4489:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7814,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7794,
                                    "src": "4498:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7815,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4488:18:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "4467:39:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7817,
                            "nodeType": "ExpressionStatement",
                            "src": "4467:39:17"
                          }
                        ]
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7821,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4555:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4555:10:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7823,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "4579:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7824,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7747,
                            "src": "4599:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7825,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7794,
                            "src": "4619:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7826,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7796,
                            "src": "4640:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7828,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7745,
                                "src": "4674:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7829,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7747,
                                "src": "4682:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7830,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7794,
                                "src": "4690:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7831,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7796,
                                "src": "4699:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7827,
                              "name": "_convertStep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8094,
                              "src": "4661:12:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256) returns (uint256)"
                              }
                            },
                            "id": 7832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4661:46:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7820,
                          "name": "LogConvert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7585,
                          "src": "4531:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256,uint256,uint256)"
                          }
                        },
                        "id": 7833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4531:186:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7834,
                      "nodeType": "EmitStatement",
                      "src": "4526:191:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7836,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_convert",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7748,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7745,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7836,
                      "src": "3888:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7744,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3888:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7747,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7836,
                      "src": "3904:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7746,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3904:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3887:32:17"
                },
                "returnParameters": {
                  "id": 7749,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3929:0:17"
                },
                "scope": 8256,
                "src": "3870:854:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8093,
                  "nodeType": "Block",
                  "src": "5006:2541:17",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7849,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7838,
                          "src": "5044:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7850,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7840,
                          "src": "5054:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5044:16:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7917,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7838,
                            "src": "5597:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7918,
                            "name": "govToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7559,
                            "src": "5607:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5597:18:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 7941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 7939,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7840,
                              "src": "5798:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7940,
                              "name": "govToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7559,
                              "src": "5808:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5798:18:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7961,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7838,
                                "src": "6000:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7962,
                                "name": "weth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7561,
                                "src": "6010:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6000:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7983,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7840,
                                  "src": "6216:6:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7984,
                                  "name": "weth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7561,
                                  "src": "6226:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6216:14:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 8087,
                                "nodeType": "Block",
                                "src": "6428:1113:17",
                                "statements": [
                                  {
                                    "assignments": [
                                      8006
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 8006,
                                        "mutability": "mutable",
                                        "name": "bridge0",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 8087,
                                        "src": "6472:15:17",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 8005,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6472:7:17",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 8010,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8008,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7838,
                                          "src": "6500:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8007,
                                        "name": "bridgeFor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7641,
                                        "src": "6490:9:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address) view returns (address)"
                                        }
                                      },
                                      "id": 8009,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6490:17:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6472:35:17"
                                  },
                                  {
                                    "assignments": [
                                      8012
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 8012,
                                        "mutability": "mutable",
                                        "name": "bridge1",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 8087,
                                        "src": "6521:15:17",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 8011,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6521:7:17",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 8016,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8014,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7840,
                                          "src": "6549:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8013,
                                        "name": "bridgeFor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7641,
                                        "src": "6539:9:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address) view returns (address)"
                                        }
                                      },
                                      "id": 8015,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6539:17:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6521:35:17"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 8019,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 8017,
                                        "name": "bridge0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "6574:7:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 8018,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7840,
                                        "src": "6585:6:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6574:17:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 8040,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 8038,
                                          "name": "bridge1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8012,
                                          "src": "6896:7:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 8039,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7838,
                                          "src": "6907:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "6896:17:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 8084,
                                        "nodeType": "Block",
                                        "src": "7214:317:17",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8082,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "id": 8059,
                                                "name": "govTokenOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7847,
                                                "src": "7232:11:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 8061,
                                                    "name": "bridge0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8006,
                                                    "src": "7280:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 8062,
                                                    "name": "bridge1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8012,
                                                    "src": "7309:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8064,
                                                        "name": "token0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7838,
                                                        "src": "7390:6:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8065,
                                                        "name": "bridge0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8006,
                                                        "src": "7398:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8066,
                                                        "name": "amount0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7842,
                                                        "src": "7407:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "id": 8069,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "7424:4:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          ],
                                                          "id": 8068,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "7416:7:17",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 8067,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7416:7:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": null,
                                                              "typeString": null
                                                            }
                                                          }
                                                        },
                                                        "id": 8070,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7416:13:17",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 8063,
                                                      "name": "_swap",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8236,
                                                      "src": "7384:5:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                      }
                                                    },
                                                    "id": 8071,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7384:46:17",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8073,
                                                        "name": "token1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7840,
                                                        "src": "7458:6:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8074,
                                                        "name": "bridge1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8012,
                                                        "src": "7466:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8075,
                                                        "name": "amount1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7844,
                                                        "src": "7475:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "id": 8078,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "7492:4:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          ],
                                                          "id": 8077,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "7484:7:17",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 8076,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7484:7:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": null,
                                                              "typeString": null
                                                            }
                                                          }
                                                        },
                                                        "id": 8079,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7484:13:17",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 8072,
                                                      "name": "_swap",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8236,
                                                      "src": "7452:5:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                      }
                                                    },
                                                    "id": 8080,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7452:46:17",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 8060,
                                                  "name": "_convertStep",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8094,
                                                  "src": "7246:12:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (address,address,uint256,uint256) returns (uint256)"
                                                  }
                                                },
                                                "id": 8081,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7246:270:17",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "7232:284:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 8083,
                                            "nodeType": "ExpressionStatement",
                                            "src": "7232:284:17"
                                          }
                                        ]
                                      },
                                      "id": 8085,
                                      "nodeType": "IfStatement",
                                      "src": "6892:639:17",
                                      "trueBody": {
                                        "id": 8058,
                                        "nodeType": "Block",
                                        "src": "6915:293:17",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8056,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "id": 8041,
                                                "name": "govTokenOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7847,
                                                "src": "6995:11:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 8043,
                                                    "name": "token0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7838,
                                                    "src": "7043:6:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 8044,
                                                    "name": "bridge1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8012,
                                                    "src": "7071:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 8045,
                                                    "name": "amount0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7842,
                                                    "src": "7100:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8047,
                                                        "name": "token1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7840,
                                                        "src": "7135:6:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8048,
                                                        "name": "bridge1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8012,
                                                        "src": "7143:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8049,
                                                        "name": "amount1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7844,
                                                        "src": "7152:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "id": 8052,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "7169:4:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                              "typeString": "contract PitBreeder"
                                                            }
                                                          ],
                                                          "id": 8051,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "7161:7:17",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 8050,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7161:7:17",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": null,
                                                              "typeString": null
                                                            }
                                                          }
                                                        },
                                                        "id": 8053,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7161:13:17",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "id": 8046,
                                                      "name": "_swap",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8236,
                                                      "src": "7129:5:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                      }
                                                    },
                                                    "id": 8054,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7129:46:17",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 8042,
                                                  "name": "_convertStep",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8094,
                                                  "src": "7009:12:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (address,address,uint256,uint256) returns (uint256)"
                                                  }
                                                },
                                                "id": 8055,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7009:184:17",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "6995:198:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 8057,
                                            "nodeType": "ExpressionStatement",
                                            "src": "6995:198:17"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 8086,
                                    "nodeType": "IfStatement",
                                    "src": "6570:961:17",
                                    "trueBody": {
                                      "id": 8037,
                                      "nodeType": "Block",
                                      "src": "6593:293:17",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8035,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 8020,
                                              "name": "govTokenOut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7847,
                                              "src": "6673:11:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8022,
                                                  "name": "bridge0",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8006,
                                                  "src": "6721:7:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8023,
                                                  "name": "token1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7840,
                                                  "src": "6750:6:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 8025,
                                                      "name": "token0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7838,
                                                      "src": "6784:6:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 8026,
                                                      "name": "bridge0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8006,
                                                      "src": "6792:7:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 8027,
                                                      "name": "amount0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7842,
                                                      "src": "6801:7:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 8030,
                                                          "name": "this",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": -28,
                                                          "src": "6818:4:17",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                            "typeString": "contract PitBreeder"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                            "typeString": "contract PitBreeder"
                                                          }
                                                        ],
                                                        "id": 8029,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "6810:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_address_$",
                                                          "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                          "id": 8028,
                                                          "name": "address",
                                                          "nodeType": "ElementaryTypeName",
                                                          "src": "6810:7:17",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                          }
                                                        }
                                                      },
                                                      "id": 8031,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "typeConversion",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "6810:13:17",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 8024,
                                                    "name": "_swap",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8236,
                                                    "src": "6778:5:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                      "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                    }
                                                  },
                                                  "id": 8032,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6778:46:17",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8033,
                                                  "name": "amount1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7844,
                                                  "src": "6846:7:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 8021,
                                                "name": "_convertStep",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8094,
                                                "src": "6687:12:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (address,address,uint256,uint256) returns (uint256)"
                                                }
                                              },
                                              "id": 8034,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6687:184:17",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6673:198:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8036,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6673:198:17"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 8088,
                              "nodeType": "IfStatement",
                              "src": "6212:1329:17",
                              "trueBody": {
                                "id": 8004,
                                "nodeType": "Block",
                                "src": "6232:190:17",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 7986,
                                        "name": "govTokenOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7847,
                                        "src": "6276:11:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7988,
                                            "name": "weth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7561,
                                            "src": "6319:4:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 7999,
                                                "name": "amount1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7844,
                                                "src": "6389:7:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 7990,
                                                    "name": "token0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7838,
                                                    "src": "6347:6:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 7991,
                                                    "name": "weth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7561,
                                                    "src": "6355:4:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 7992,
                                                    "name": "amount0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7842,
                                                    "src": "6361:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 7995,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "6378:4:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                          "typeString": "contract PitBreeder"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                          "typeString": "contract PitBreeder"
                                                        }
                                                      ],
                                                      "id": 7994,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "6370:7:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                      },
                                                      "typeName": {
                                                        "id": 7993,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "6370:7:17",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": null,
                                                          "typeString": null
                                                        }
                                                      }
                                                    },
                                                    "id": 7996,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6370:13:17",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 7989,
                                                  "name": "_swap",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8236,
                                                  "src": "6341:5:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                    "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                  }
                                                },
                                                "id": 7997,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6341:43:17",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 7998,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "add",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 291,
                                              "src": "6341:47:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 8000,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6341:56:17",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 7987,
                                          "name": "_toGovToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8255,
                                          "src": "6290:11:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,uint256) returns (uint256)"
                                          }
                                        },
                                        "id": 8001,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6290:121:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6276:135:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8003,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6276:135:17"
                                  }
                                ]
                              }
                            },
                            "id": 8089,
                            "nodeType": "IfStatement",
                            "src": "5996:1545:17",
                            "trueBody": {
                              "id": 7982,
                              "nodeType": "Block",
                              "src": "6016:190:17",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7964,
                                      "name": "govTokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7847,
                                      "src": "6060:11:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7966,
                                          "name": "weth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7561,
                                          "src": "6103:4:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 7977,
                                              "name": "amount0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7842,
                                              "src": "6173:7:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 7968,
                                                  "name": "token1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7840,
                                                  "src": "6131:6:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 7969,
                                                  "name": "weth",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7561,
                                                  "src": "6139:4:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 7970,
                                                  "name": "amount1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7844,
                                                  "src": "6145:7:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 7973,
                                                      "name": "this",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": -28,
                                                      "src": "6162:4:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                        "typeString": "contract PitBreeder"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                        "typeString": "contract PitBreeder"
                                                      }
                                                    ],
                                                    "id": 7972,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "6154:7:17",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 7971,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "6154:7:17",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                      }
                                                    }
                                                  },
                                                  "id": 7974,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6154:13:17",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 7967,
                                                "name": "_swap",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8236,
                                                "src": "6125:5:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address,address,uint256,address) returns (uint256)"
                                                }
                                              },
                                              "id": 7975,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6125:43:17",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 7976,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 291,
                                            "src": "6125:47:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 7978,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6125:56:17",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7965,
                                        "name": "_toGovToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8255,
                                        "src": "6074:11:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (address,uint256) returns (uint256)"
                                        }
                                      },
                                      "id": 7979,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6074:121:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6060:135:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7981,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6060:135:17"
                                }
                              ]
                            }
                          },
                          "id": 8090,
                          "nodeType": "IfStatement",
                          "src": "5794:1747:17",
                          "trueBody": {
                            "id": 7960,
                            "nodeType": "Block",
                            "src": "5818:172:17",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7946,
                                      "name": "pit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7557,
                                      "src": "5897:3:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 7947,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7844,
                                      "src": "5902:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7943,
                                          "name": "govToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7559,
                                          "src": "5874:8:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 7942,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1045,
                                        "src": "5867:6:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 7944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5867:16:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$1045",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 7945,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "safeTransfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1079,
                                    "src": "5867:29:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                      "typeString": "function (contract IERC20,address,uint256)"
                                    }
                                  },
                                  "id": 7948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5867:43:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7949,
                                "nodeType": "ExpressionStatement",
                                "src": "5867:43:17"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 7950,
                                    "name": "govTokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7847,
                                    "src": "5924:11:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7956,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7844,
                                        "src": "5971:7:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7952,
                                            "name": "token0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7838,
                                            "src": "5950:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7953,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7842,
                                            "src": "5958:7:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 7951,
                                          "name": "_toGovToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8255,
                                          "src": "5938:11:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,uint256) returns (uint256)"
                                          }
                                        },
                                        "id": 7954,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5938:28:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7955,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 291,
                                      "src": "5938:32:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5938:41:17",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5924:55:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7959,
                                "nodeType": "ExpressionStatement",
                                "src": "5924:55:17"
                              }
                            ]
                          }
                        },
                        "id": 8091,
                        "nodeType": "IfStatement",
                        "src": "5593:1948:17",
                        "trueBody": {
                          "id": 7938,
                          "nodeType": "Block",
                          "src": "5617:171:17",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7924,
                                    "name": "pit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7557,
                                    "src": "5695:3:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7925,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7842,
                                    "src": "5700:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7921,
                                        "name": "govToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7559,
                                        "src": "5672:8:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7920,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1045,
                                      "src": "5665:6:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 7922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5665:16:17",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$1045",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1079,
                                  "src": "5665:29:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 7926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5665:43:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7927,
                              "nodeType": "ExpressionStatement",
                              "src": "5665:43:17"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7928,
                                  "name": "govTokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7847,
                                  "src": "5722:11:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7934,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7842,
                                      "src": "5769:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7930,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7840,
                                          "src": "5748:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 7931,
                                          "name": "amount1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7844,
                                          "src": "5756:7:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7929,
                                        "name": "_toGovToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8255,
                                        "src": "5736:11:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (address,uint256) returns (uint256)"
                                        }
                                      },
                                      "id": 7932,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5736:28:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7933,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 291,
                                    "src": "5736:32:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7935,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5736:41:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5722:55:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7937,
                              "nodeType": "ExpressionStatement",
                              "src": "5722:55:17"
                            }
                          ]
                        }
                      },
                      "id": 8092,
                      "nodeType": "IfStatement",
                      "src": "5040:2501:17",
                      "trueBody": {
                        "id": 7916,
                        "nodeType": "Block",
                        "src": "5062:525:17",
                        "statements": [
                          {
                            "assignments": [
                              7853
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7853,
                                "mutability": "mutable",
                                "name": "amount",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7916,
                                "src": "5076:14:17",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7852,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5076:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7858,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7856,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7844,
                                  "src": "5105:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7854,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7842,
                                  "src": "5093:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 291,
                                "src": "5093:11:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5093:20:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5076:37:17"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7859,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7838,
                                "src": "5131:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7860,
                                "name": "govToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7559,
                                "src": "5141:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5131:18:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7875,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7838,
                                  "src": "5274:6:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7876,
                                  "name": "weth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7561,
                                  "src": "5284:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5274:14:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 7913,
                                "nodeType": "Block",
                                "src": "5368:209:17",
                                "statements": [
                                  {
                                    "assignments": [
                                      7887
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 7887,
                                        "mutability": "mutable",
                                        "name": "bridge",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 7913,
                                        "src": "5386:14:17",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 7886,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5386:7:17",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 7891,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7889,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7838,
                                          "src": "5413:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 7888,
                                        "name": "bridgeFor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7641,
                                        "src": "5403:9:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address) view returns (address)"
                                        }
                                      },
                                      "id": 7890,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5403:17:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5386:34:17"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7902,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 7892,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7853,
                                        "src": "5438:6:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7894,
                                            "name": "token0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7838,
                                            "src": "5453:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7895,
                                            "name": "bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7887,
                                            "src": "5461:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7896,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7853,
                                            "src": "5469:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 7899,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "5485:4:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                  "typeString": "contract PitBreeder"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_PitBreeder_$8256",
                                                  "typeString": "contract PitBreeder"
                                                }
                                              ],
                                              "id": 7898,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "5477:7:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 7897,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5477:7:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 7900,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5477:13:17",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 7893,
                                          "name": "_swap",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8236,
                                          "src": "5447:5:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address,address,uint256,address) returns (uint256)"
                                          }
                                        },
                                        "id": 7901,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5447:44:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5438:53:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7903,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5438:53:17"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7911,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 7904,
                                        "name": "govTokenOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7847,
                                        "src": "5509:11:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7906,
                                            "name": "bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7887,
                                            "src": "5536:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7907,
                                            "name": "bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7887,
                                            "src": "5544:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7908,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7853,
                                            "src": "5552:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 7909,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5560:1:17",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "id": 7905,
                                          "name": "_convertStep",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8094,
                                          "src": "5523:12:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,address,uint256,uint256) returns (uint256)"
                                          }
                                        },
                                        "id": 7910,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5523:39:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5509:53:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7912,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5509:53:17"
                                  }
                                ]
                              },
                              "id": 7914,
                              "nodeType": "IfStatement",
                              "src": "5270:307:17",
                              "trueBody": {
                                "id": 7885,
                                "nodeType": "Block",
                                "src": "5290:72:17",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7883,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 7878,
                                        "name": "govTokenOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7847,
                                        "src": "5308:11:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7880,
                                            "name": "weth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7561,
                                            "src": "5334:4:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7881,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7853,
                                            "src": "5340:6:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 7879,
                                          "name": "_toGovToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8255,
                                          "src": "5322:11:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,uint256) returns (uint256)"
                                          }
                                        },
                                        "id": 7882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5322:25:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5308:39:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7884,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5308:39:17"
                                  }
                                ]
                              }
                            },
                            "id": 7915,
                            "nodeType": "IfStatement",
                            "src": "5127:450:17",
                            "trueBody": {
                              "id": 7874,
                              "nodeType": "Block",
                              "src": "5151:113:17",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7866,
                                        "name": "pit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7557,
                                        "src": "5199:3:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 7867,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7853,
                                        "src": "5204:6:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7863,
                                            "name": "govToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7559,
                                            "src": "5176:8:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 7862,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1045,
                                          "src": "5169:6:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 7864,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5169:16:17",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$1045",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 7865,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "safeTransfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1079,
                                      "src": "5169:29:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                        "typeString": "function (contract IERC20,address,uint256)"
                                      }
                                    },
                                    "id": 7868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5169:42:17",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7869,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5169:42:17"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7872,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7870,
                                      "name": "govTokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7847,
                                      "src": "5229:11:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7871,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7853,
                                      "src": "5243:6:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5229:20:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7873,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5229:20:17"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 8094,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_convertStep",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7845,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7838,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8094,
                      "src": "4872:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7837,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4872:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7840,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8094,
                      "src": "4896:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7839,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4896:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7842,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8094,
                      "src": "4920:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7841,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4920:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7844,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8094,
                      "src": "4945:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7843,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4945:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4862:104:17"
                },
                "returnParameters": {
                  "id": 7848,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7847,
                      "mutability": "mutable",
                      "name": "govTokenOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8094,
                      "src": "4985:19:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7846,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4985:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4984:21:17"
                },
                "scope": 8256,
                "src": "4841:2706:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8235,
                  "nodeType": "Block",
                  "src": "7792:1054:17",
                  "statements": [
                    {
                      "assignments": [
                        8108
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8108,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8235,
                          "src": "7843:19:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                            "typeString": "contract IUniswapV2Pair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 8107,
                            "name": "IUniswapV2Pair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 11977,
                            "src": "7843:14:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8116,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8112,
                                "name": "fromToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8096,
                                "src": "7908:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8113,
                                "name": "toToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8098,
                                "src": "7919:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8110,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7555,
                                "src": "7892:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                                  "typeString": "contract IUniswapV2Factory"
                                }
                              },
                              "id": 8111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPair",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11703,
                              "src": "7892:15:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address) view external returns (address)"
                              }
                            },
                            "id": 8114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7892:35:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8109,
                          "name": "IUniswapV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11977,
                          "src": "7877:14:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$11977_$",
                            "typeString": "type(contract IUniswapV2Pair)"
                          }
                        },
                        "id": 8115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7877:51:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                          "typeString": "contract IUniswapV2Pair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7843:85:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8120,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8108,
                                  "src": "7954:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                ],
                                "id": 8119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7946:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8118,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7946:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 8121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7946:13:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 8124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7971:1:17",
                                  "subdenomination": null,
                                  "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": 8123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7963:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8122,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7963:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 8125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7963:10:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "7946:27:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "506974427265656465723a2043616e6e6f7420636f6e76657274",
                            "id": 8127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7975:28:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7f1ff4bab4c7091991b2965c22d80245af9605ee18f6fe07f465ea1101c9b775",
                              "typeString": "literal_string \"PitBreeder: Cannot convert\""
                            },
                            "value": "PitBreeder: Cannot convert"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7f1ff4bab4c7091991b2965c22d80245af9605ee18f6fe07f465ea1101c9b775",
                              "typeString": "literal_string \"PitBreeder: Cannot convert\""
                            }
                          ],
                          "id": 8117,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7938:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7938:66:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8129,
                      "nodeType": "ExpressionStatement",
                      "src": "7938:66:17"
                    },
                    {
                      "assignments": [
                        8131,
                        8133,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8131,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8235,
                          "src": "8063:16:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8130,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8063:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8133,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8235,
                          "src": "8081:16:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8132,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8081:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 8137,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8134,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8108,
                            "src": "8103:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                              "typeString": "contract IUniswapV2Pair"
                            }
                          },
                          "id": 8135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11919,
                          "src": "8103:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 8136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8103:18:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8062:59:17"
                    },
                    {
                      "assignments": [
                        8139
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8139,
                          "mutability": "mutable",
                          "name": "amountInWithFee",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8235,
                          "src": "8131:23:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8138,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8131:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8144,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "393937",
                            "id": 8142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8170:3:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8140,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8100,
                            "src": "8157:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 347,
                          "src": "8157:12:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8157:17:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8131:43:17"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8145,
                          "name": "fromToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8096,
                          "src": "8188:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8146,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8108,
                              "src": "8201:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 8147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11905,
                            "src": "8201:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 8148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8201:13:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "8188:26:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 8233,
                        "nodeType": "Block",
                        "src": "8531:309:17",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8192,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8105,
                                "src": "8545:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8198,
                                      "name": "reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8131,
                                      "src": "8595:8:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "393937",
                                          "id": 8195,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8586:3:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_997_by_1",
                                            "typeString": "int_const 997"
                                          },
                                          "value": "997"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_997_by_1",
                                            "typeString": "int_const 997"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8193,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8100,
                                          "src": "8573:8:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 8194,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "8573:12:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8196,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8573:17:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8197,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "8573:21:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8573:31:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8205,
                                      "name": "amountInWithFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8139,
                                      "src": "8646:15:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31303030",
                                          "id": 8202,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8636:4:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          },
                                          "value": "1000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8200,
                                          "name": "reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8133,
                                          "src": "8623:8:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 8201,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "8623:12:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8203,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8623:18:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8204,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 291,
                                    "src": "8623:22:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8623:39:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8573:89:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8545:117:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8209,
                            "nodeType": "ExpressionStatement",
                            "src": "8545:117:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8216,
                                      "name": "pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8108,
                                      "src": "8715:4:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                        "typeString": "contract IUniswapV2Pair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                        "typeString": "contract IUniswapV2Pair"
                                      }
                                    ],
                                    "id": 8215,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8707:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8214,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8707:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8707:13:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8218,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8100,
                                  "src": "8722:8:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8211,
                                      "name": "fromToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8096,
                                      "src": "8683:9:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8210,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1045,
                                    "src": "8676:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 8212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8676:17:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 8213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1079,
                                "src": "8676:30:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                  "typeString": "function (contract IERC20,address,uint256)"
                                }
                              },
                              "id": 8219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8676:55:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8220,
                            "nodeType": "ExpressionStatement",
                            "src": "8676:55:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8224,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8105,
                                  "src": "8755:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 8225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8766:1:17",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8226,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8102,
                                  "src": "8769:2:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 8229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8783:1:17",
                                      "subdenomination": null,
                                      "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": 8228,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "8773:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 8227,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8777:5:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 8230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8773:12:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8221,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8108,
                                  "src": "8745:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                },
                                "id": 8223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11961,
                                "src": "8745:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 8231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8745:41:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8232,
                            "nodeType": "ExpressionStatement",
                            "src": "8745:41:17"
                          }
                        ]
                      },
                      "id": 8234,
                      "nodeType": "IfStatement",
                      "src": "8184:656:17",
                      "trueBody": {
                        "id": 8191,
                        "nodeType": "Block",
                        "src": "8216:309:17",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8150,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8105,
                                "src": "8230:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8156,
                                      "name": "reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8133,
                                      "src": "8280:8:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "393937",
                                          "id": 8153,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8271:3:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_997_by_1",
                                            "typeString": "int_const 997"
                                          },
                                          "value": "997"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_997_by_1",
                                            "typeString": "int_const 997"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8151,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8100,
                                          "src": "8258:8:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 8152,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "8258:12:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8154,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8258:17:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8155,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 347,
                                    "src": "8258:21:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8258:31:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8163,
                                      "name": "amountInWithFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8139,
                                      "src": "8331:15:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31303030",
                                          "id": 8160,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8321:4:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          },
                                          "value": "1000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8158,
                                          "name": "reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8131,
                                          "src": "8308:8:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 8159,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 347,
                                        "src": "8308:12:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8308:18:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8162,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 291,
                                    "src": "8308:22:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8308:39:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8258:89:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8230:117:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8167,
                            "nodeType": "ExpressionStatement",
                            "src": "8230:117:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8174,
                                      "name": "pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8108,
                                      "src": "8400:4:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                        "typeString": "contract IUniswapV2Pair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                        "typeString": "contract IUniswapV2Pair"
                                      }
                                    ],
                                    "id": 8173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8392:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8172,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8392:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8175,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8392:13:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8176,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8100,
                                  "src": "8407:8:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8169,
                                      "name": "fromToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8096,
                                      "src": "8368:9:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8168,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1045,
                                    "src": "8361:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$1045_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 8170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8361:17:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$1045",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 8171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1079,
                                "src": "8361:30:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1045_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1045_$",
                                  "typeString": "function (contract IERC20,address,uint256)"
                                }
                              },
                              "id": 8177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8361:55:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8178,
                            "nodeType": "ExpressionStatement",
                            "src": "8361:55:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 8182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8440:1:17",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8183,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8105,
                                  "src": "8443:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8184,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8102,
                                  "src": "8454:2:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 8187,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8468:1:17",
                                      "subdenomination": null,
                                      "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": 8186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "8458:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 8185,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8462:5:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 8188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8458:12:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8179,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8108,
                                  "src": "8430:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$11977",
                                    "typeString": "contract IUniswapV2Pair"
                                  }
                                },
                                "id": 8181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11961,
                                "src": "8430:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 8189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8430:41:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8190,
                            "nodeType": "ExpressionStatement",
                            "src": "8430:41:17"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 8236,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8103,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8096,
                      "mutability": "mutable",
                      "name": "fromToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8236,
                      "src": "7660:17:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8095,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7660:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8098,
                      "mutability": "mutable",
                      "name": "toToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8236,
                      "src": "7687:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8097,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7687:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8100,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8236,
                      "src": "7712:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7712:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8102,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8236,
                      "src": "7738:10:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8101,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7738:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7650:104:17"
                },
                "returnParameters": {
                  "id": 8106,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8105,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8236,
                      "src": "7773:17:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8104,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7773:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7772:19:17"
                },
                "scope": 8256,
                "src": "7636:1210:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8254,
                  "nodeType": "Block",
                  "src": "9003:89:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8245,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8243,
                          "src": "9036:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8247,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8238,
                              "src": "9054:5:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8248,
                              "name": "govToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7559,
                              "src": "9061:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8249,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8240,
                              "src": "9071:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8250,
                              "name": "pit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7557,
                              "src": "9081:3:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8246,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8236,
                            "src": "9048:5:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,address) returns (uint256)"
                            }
                          },
                          "id": 8251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9048:37:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9036:49:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8253,
                      "nodeType": "ExpressionStatement",
                      "src": "9036:49:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 8255,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_toGovToken",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8241,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8238,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8255,
                      "src": "8913:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8237,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8913:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8240,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8255,
                      "src": "8928:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8239,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8928:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8912:33:17"
                },
                "returnParameters": {
                  "id": 8244,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8243,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8255,
                      "src": "8980:17:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8242,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8980:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8979:19:17"
                },
                "scope": 8256,
                "src": "8892:200:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 8257,
            "src": "657:8437:17"
          }
        ],
        "src": "48:9047:17"
      }
    },
    "contracts/Timelock.sol": {
      "id": 18,
      "AST": {
        "absolutePath": "contracts/Timelock.sol",
        "exportedSymbols": {
          "Timelock": [
            8737
          ]
        },
        "id": 8738,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8258,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "1715:23:18"
          },
          {
            "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
            "file": "@openzeppelin/contracts/math/SafeMath.sol",
            "id": 8259,
            "nodeType": "ImportDirective",
            "scope": 8738,
            "sourceUnit": 465,
            "src": "1740:51:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8737,
            "linearizedBaseContracts": [
              8737
            ],
            "name": "Timelock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8262,
                "libraryName": {
                  "contractScope": null,
                  "id": 8260,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 464,
                  "src": "1823:8:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$464",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "1817:27:18",
                "typeName": {
                  "id": 8261,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1836:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8266,
                "name": "NewAdmin",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8265,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8264,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newAdmin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8266,
                      "src": "1865:24:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8263,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1865:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1864:26:18"
                },
                "src": "1850:41:18"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8270,
                "name": "NewPendingAdmin",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8269,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8268,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newPendingAdmin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8270,
                      "src": "1918:31:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8267,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1918:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1917:33:18"
                },
                "src": "1896:55:18"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8274,
                "name": "NewDelay",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8273,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8272,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newDelay",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8274,
                      "src": "1971:24:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8271,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1971:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1970:26:18"
                },
                "src": "1956:41:18"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8288,
                "name": "CancelTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8287,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8276,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2035:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8275,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2035:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8278,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2067:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8277,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2067:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8280,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2099:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8279,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2099:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8282,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2122:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8281,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2122:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8284,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2148:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8283,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2148:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8286,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8288,
                      "src": "2168:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8285,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2168:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2025:160:18"
                },
                "src": "2002:184:18"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8302,
                "name": "ExecuteTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8301,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8290,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2225:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8289,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2225:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8292,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2257:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8291,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2257:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8294,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2289:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2289:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8296,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2312:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8295,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2312:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8298,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2338:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8297,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2338:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8300,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8302,
                      "src": "2358:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8299,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2358:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2215:160:18"
                },
                "src": "2191:185:18"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8316,
                "name": "QueueTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8315,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8304,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2413:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8303,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2413:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8306,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2445:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8305,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2445:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8308,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2477:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8307,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2477:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8310,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2500:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8309,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2500:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8312,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2526:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8311,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8314,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8316,
                      "src": "2546:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8313,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2546:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2403:160:18"
                },
                "src": "2381:183:18"
              },
              {
                "constant": true,
                "functionSelector": "c1a287e2",
                "id": 8319,
                "mutability": "constant",
                "name": "GRACE_PERIOD",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2570:46:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8317,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2570:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3134",
                  "id": 8318,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "2609:7:18",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1209600_by_1",
                    "typeString": "int_const 1209600"
                  },
                  "value": "14"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "b1b43ae5",
                "id": 8322,
                "mutability": "constant",
                "name": "MINIMUM_DELAY",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2622:46:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8320,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2622:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "32",
                  "id": 8321,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "2662:6:18",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_172800_by_1",
                    "typeString": "int_const 172800"
                  },
                  "value": "2"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "7d645fab",
                "id": 8325,
                "mutability": "constant",
                "name": "MAXIMUM_DELAY",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2674:47:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8323,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2674:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3330",
                  "id": 8324,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "2714:7:18",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_2592000_by_1",
                    "typeString": "int_const 2592000"
                  },
                  "value": "30"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f851a440",
                "id": 8327,
                "mutability": "mutable",
                "name": "admin",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2728:20:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8326,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2728:7:18",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "26782247",
                "id": 8329,
                "mutability": "mutable",
                "name": "pendingAdmin",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2754:27:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 8328,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2754:7:18",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "6a42b8f8",
                "id": 8331,
                "mutability": "mutable",
                "name": "delay",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2787:20:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8330,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2787:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "6fc1f57e",
                "id": 8333,
                "mutability": "mutable",
                "name": "admin_initialized",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2813:29:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 8332,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2813:4:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "f2b06537",
                "id": 8337,
                "mutability": "mutable",
                "name": "queuedTransactions",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8737,
                "src": "2849:50:18",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                  "typeString": "mapping(bytes32 => bool)"
                },
                "typeName": {
                  "id": 8336,
                  "keyType": {
                    "id": 8334,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2857:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "2849:24:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "valueType": {
                    "id": 8335,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2868:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8370,
                  "nodeType": "Block",
                  "src": "2957:365:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8345,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8341,
                              "src": "2988:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8346,
                              "name": "MINIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8322,
                              "src": "2998:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2988:23:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                            "id": 8348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3025:57:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                              "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                            },
                            "value": "Timelock::constructor: Delay must exceed minimum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                              "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                            }
                          ],
                          "id": 8344,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2967:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2967:125:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8350,
                      "nodeType": "ExpressionStatement",
                      "src": "2967:125:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8352,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8341,
                              "src": "3123:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8353,
                              "name": "MAXIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8325,
                              "src": "3133:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3123:23:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                            "id": 8355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3160:61:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1c6bbbb104d334e050c095fdc78060a9d00e8c1dbcd319e929267c5907159fb8",
                              "typeString": "literal_string \"Timelock::constructor: Delay must not exceed maximum delay.\""
                            },
                            "value": "Timelock::constructor: Delay must not exceed maximum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1c6bbbb104d334e050c095fdc78060a9d00e8c1dbcd319e929267c5907159fb8",
                              "typeString": "literal_string \"Timelock::constructor: Delay must not exceed maximum delay.\""
                            }
                          ],
                          "id": 8351,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3102:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3102:129:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8357,
                      "nodeType": "ExpressionStatement",
                      "src": "3102:129:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8358,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8327,
                          "src": "3242:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8359,
                          "name": "admin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8339,
                          "src": "3250:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3242:14:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 8361,
                      "nodeType": "ExpressionStatement",
                      "src": "3242:14:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8362,
                          "name": "delay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8331,
                          "src": "3266:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8363,
                          "name": "delay_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8341,
                          "src": "3274:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3266:14:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8365,
                      "nodeType": "ExpressionStatement",
                      "src": "3266:14:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8366,
                          "name": "admin_initialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8333,
                          "src": "3290:17:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3310:5:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "3290:25:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8369,
                      "nodeType": "ExpressionStatement",
                      "src": "3290:25:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 8371,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8342,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8339,
                      "mutability": "mutable",
                      "name": "admin_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8371,
                      "src": "2918:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8338,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2918:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8341,
                      "mutability": "mutable",
                      "name": "delay_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8371,
                      "src": "2934:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8340,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2934:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2917:32:18"
                },
                "returnParameters": {
                  "id": 8343,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2957:0:18"
                },
                "scope": 8737,
                "src": "2906:416:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8374,
                  "nodeType": "Block",
                  "src": "3399:2:18",
                  "statements": []
                },
                "documentation": null,
                "id": 8375,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8372,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3379:2:18"
                },
                "returnParameters": {
                  "id": 8373,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3399:0:18"
                },
                "scope": 8737,
                "src": "3372:29:18",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8413,
                  "nodeType": "Block",
                  "src": "3448:463:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 8387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8381,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3479:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3479:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8385,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3501:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Timelock_$8737",
                                    "typeString": "contract Timelock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Timelock_$8737",
                                    "typeString": "contract Timelock"
                                  }
                                ],
                                "id": 8384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3493:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8383,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3493:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 8386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3493:13:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "3479:27:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                            "id": 8388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3520:51:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                              "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                            },
                            "value": "Timelock::setDelay: Call must come from Timelock."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                              "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                            }
                          ],
                          "id": 8380,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3458:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3458:123:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8390,
                      "nodeType": "ExpressionStatement",
                      "src": "3458:123:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8392,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8377,
                              "src": "3612:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8393,
                              "name": "MINIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8322,
                              "src": "3622:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3612:23:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                            "id": 8395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3649:54:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                            },
                            "value": "Timelock::setDelay: Delay must exceed minimum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                            }
                          ],
                          "id": 8391,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3591:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3591:122:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8397,
                      "nodeType": "ExpressionStatement",
                      "src": "3591:122:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8399,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8377,
                              "src": "3744:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8400,
                              "name": "MAXIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8325,
                              "src": "3754:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3744:23:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                            "id": 8402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3781:58:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            },
                            "value": "Timelock::setDelay: Delay must not exceed maximum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            }
                          ],
                          "id": 8398,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3723:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3723:126:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8404,
                      "nodeType": "ExpressionStatement",
                      "src": "3723:126:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8405,
                          "name": "delay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8331,
                          "src": "3859:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8406,
                          "name": "delay_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8377,
                          "src": "3867:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3859:14:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8408,
                      "nodeType": "ExpressionStatement",
                      "src": "3859:14:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8410,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8331,
                            "src": "3898:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8409,
                          "name": "NewDelay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8274,
                          "src": "3889:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 8411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3889:15:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8412,
                      "nodeType": "EmitStatement",
                      "src": "3884:20:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e177246e",
                "id": 8414,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setDelay",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8378,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8377,
                      "mutability": "mutable",
                      "name": "delay_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8414,
                      "src": "3425:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8376,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3425:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3424:16:18"
                },
                "returnParameters": {
                  "id": 8379,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3448:0:18"
                },
                "scope": 8737,
                "src": "3407:504:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8441,
                  "nodeType": "Block",
                  "src": "3947:240:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8418,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3978:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3978:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8420,
                              "name": "pendingAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8329,
                              "src": "3992:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3978:26:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e",
                            "id": 8422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4018:58:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                              "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                            },
                            "value": "Timelock::acceptAdmin: Call must come from pendingAdmin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                              "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                            }
                          ],
                          "id": 8417,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3957:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3957:129:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8424,
                      "nodeType": "ExpressionStatement",
                      "src": "3957:129:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8425,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8327,
                          "src": "4096:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8426,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "4104:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 8427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4104:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4096:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 8429,
                      "nodeType": "ExpressionStatement",
                      "src": "4096:18:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8430,
                          "name": "pendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8329,
                          "src": "4124:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4147:1:18",
                              "subdenomination": null,
                              "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": 8432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4139:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 8431,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4139:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4139:10:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4124:25:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 8436,
                      "nodeType": "ExpressionStatement",
                      "src": "4124:25:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8438,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8327,
                            "src": "4174:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8437,
                          "name": "NewAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8266,
                          "src": "4165:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 8439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4165:15:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8440,
                      "nodeType": "EmitStatement",
                      "src": "4160:20:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0e18b681",
                "id": 8442,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "acceptAdmin",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8415,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3937:2:18"
                },
                "returnParameters": {
                  "id": 8416,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3947:0:18"
                },
                "scope": 8737,
                "src": "3917:270:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8482,
                  "nodeType": "Block",
                  "src": "4248:563:18",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 8447,
                        "name": "admin_initialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8333,
                        "src": "4330:17:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 8472,
                        "nodeType": "Block",
                        "src": "4522:200:18",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 8464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8461,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "4561:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 8462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4561:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 8463,
                                    "name": "admin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8327,
                                    "src": "4575:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "4561:19:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2046697273742063616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                                  "id": 8465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4598:61:18",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6062dfec47aae9604cf04c61674df062a73d8861631191896e5b4a3b1e0d18bc",
                                    "typeString": "literal_string \"Timelock::setPendingAdmin: First call must come from admin.\""
                                  },
                                  "value": "Timelock::setPendingAdmin: First call must come from admin."
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6062dfec47aae9604cf04c61674df062a73d8861631191896e5b4a3b1e0d18bc",
                                    "typeString": "literal_string \"Timelock::setPendingAdmin: First call must come from admin.\""
                                  }
                                ],
                                "id": 8460,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4536:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 8466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4536:137:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8467,
                            "nodeType": "ExpressionStatement",
                            "src": "4536:137:18"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8468,
                                "name": "admin_initialized",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8333,
                                "src": "4687:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 8469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4707:4:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "4687:24:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 8471,
                            "nodeType": "ExpressionStatement",
                            "src": "4687:24:18"
                          }
                        ]
                      },
                      "id": 8473,
                      "nodeType": "IfStatement",
                      "src": "4326:396:18",
                      "trueBody": {
                        "id": 8459,
                        "nodeType": "Block",
                        "src": "4349:167:18",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  "id": 8455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8449,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "4388:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 8450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4388:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8453,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "4410:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Timelock_$8737",
                                          "typeString": "contract Timelock"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Timelock_$8737",
                                          "typeString": "contract Timelock"
                                        }
                                      ],
                                      "id": 8452,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4402:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 8451,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4402:7:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4402:13:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "4388:27:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                                  "id": 8456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4433:58:18",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                                    "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                                  },
                                  "value": "Timelock::setPendingAdmin: Call must come from Timelock."
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                                    "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                                  }
                                ],
                                "id": 8448,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4363:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 8457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4363:142:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 8458,
                            "nodeType": "ExpressionStatement",
                            "src": "4363:142:18"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8474,
                          "name": "pendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8329,
                          "src": "4731:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8475,
                          "name": "pendingAdmin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8444,
                          "src": "4746:13:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4731:28:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 8477,
                      "nodeType": "ExpressionStatement",
                      "src": "4731:28:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8479,
                            "name": "pendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8329,
                            "src": "4791:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8478,
                          "name": "NewPendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8270,
                          "src": "4775:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 8480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4775:29:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8481,
                      "nodeType": "EmitStatement",
                      "src": "4770:34:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4dd18bf5",
                "id": 8483,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setPendingAdmin",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8445,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8444,
                      "mutability": "mutable",
                      "name": "pendingAdmin_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8483,
                      "src": "4218:21:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4218:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4217:23:18"
                },
                "returnParameters": {
                  "id": 8446,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4248:0:18"
                },
                "scope": 8737,
                "src": "4193:618:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8547,
                  "nodeType": "Block",
                  "src": "5002:545:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8499,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5033:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5033:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8501,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8327,
                              "src": "5047:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5033:19:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 8503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5066:56:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                              "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::queueTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                              "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 8498,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5012:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5012:120:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8505,
                      "nodeType": "ExpressionStatement",
                      "src": "5012:120:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8507,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8493,
                              "src": "5163:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8511,
                                  "name": "delay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8331,
                                  "src": "5194:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 8508,
                                    "name": "getBlockTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8736,
                                    "src": "5170:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 8509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5170:19:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 291,
                                "src": "5170:23:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5170:30:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5163:37:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e",
                            "id": 8514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5214:75:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                              "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                            },
                            "value": "Timelock::queueTransaction: Estimated execution block must satisfy delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                              "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                            }
                          ],
                          "id": 8506,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5142:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5142:157:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8516,
                      "nodeType": "ExpressionStatement",
                      "src": "5142:157:18"
                    },
                    {
                      "assignments": [
                        8518
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8518,
                          "mutability": "mutable",
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8547,
                          "src": "5310:14:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8517,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5310:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8529,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8522,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8485,
                                "src": "5360:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8523,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8487,
                                "src": "5368:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8524,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8489,
                                "src": "5375:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8525,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8491,
                                "src": "5386:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8526,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8493,
                                "src": "5392:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8520,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "5349:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5349:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 8527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5349:47:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8519,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "5339:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5339:58:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5310:87:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8530,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8337,
                            "src": "5407:18:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 8532,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8531,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8518,
                            "src": "5426:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5407:26:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 8533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5436:4:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "5407:33:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8535,
                      "nodeType": "ExpressionStatement",
                      "src": "5407:33:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8537,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8518,
                            "src": "5473:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8538,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8485,
                            "src": "5481:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8539,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8487,
                            "src": "5489:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8540,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8489,
                            "src": "5496:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8541,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8491,
                            "src": "5507:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8542,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8493,
                            "src": "5513:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8536,
                          "name": "QueueTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8316,
                          "src": "5456:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 8543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5456:61:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8544,
                      "nodeType": "EmitStatement",
                      "src": "5451:66:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8545,
                        "name": "txHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8518,
                        "src": "5534:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "functionReturnParameters": 8497,
                      "id": 8546,
                      "nodeType": "Return",
                      "src": "5527:13:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3a66f901",
                "id": 8548,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "queueTransaction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8494,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8485,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4852:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8484,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4852:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8487,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4876:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8486,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4876:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8489,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4899:23:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8488,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4899:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8491,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4932:17:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8490,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4932:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8493,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4959:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8492,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4959:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4842:134:18"
                },
                "returnParameters": {
                  "id": 8497,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8496,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8548,
                      "src": "4993:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8495,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4993:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4992:9:18"
                },
                "scope": 8737,
                "src": "4817:730:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8597,
                  "nodeType": "Block",
                  "src": "5721:358:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8562,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5752:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5752:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8564,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8327,
                              "src": "5766:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5752:19:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 8566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5785:57:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                              "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::cancelTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                              "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 8561,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5731:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5731:121:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8568,
                      "nodeType": "ExpressionStatement",
                      "src": "5731:121:18"
                    },
                    {
                      "assignments": [
                        8570
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8570,
                          "mutability": "mutable",
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8597,
                          "src": "5863:14:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8569,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5863:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8581,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8574,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8550,
                                "src": "5913:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8575,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8552,
                                "src": "5921:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8576,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8554,
                                "src": "5928:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8577,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8556,
                                "src": "5939:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8578,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8558,
                                "src": "5945:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8572,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "5902:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5902:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 8579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5902:47:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8571,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "5892:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5892:58:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5863:87:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8582,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8337,
                            "src": "5960:18:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 8584,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8583,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8570,
                            "src": "5979:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5960:26:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5989:5:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "5960:34:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8587,
                      "nodeType": "ExpressionStatement",
                      "src": "5960:34:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8589,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8570,
                            "src": "6028:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8590,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8550,
                            "src": "6036:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8591,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8552,
                            "src": "6044:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8592,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8554,
                            "src": "6051:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8593,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8556,
                            "src": "6062:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8594,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8558,
                            "src": "6068:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8588,
                          "name": "CancelTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8288,
                          "src": "6010:17:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 8595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6010:62:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8596,
                      "nodeType": "EmitStatement",
                      "src": "6005:67:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "591fcdfe",
                "id": 8598,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "cancelTransaction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8559,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8550,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8598,
                      "src": "5589:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8549,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5589:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8552,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8598,
                      "src": "5613:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8551,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5613:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8554,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8598,
                      "src": "5636:23:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8553,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5636:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8556,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8598,
                      "src": "5669:17:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8555,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5669:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8558,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8598,
                      "src": "5696:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8557,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5696:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5579:134:18"
                },
                "returnParameters": {
                  "id": 8560,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5721:0:18"
                },
                "scope": 8737,
                "src": "5553:526:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8726,
                  "nodeType": "Block",
                  "src": "6285:1384:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8614,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6316:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6316:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8616,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8327,
                              "src": "6330:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "6316:19:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 8618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6349:58:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                              "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::executeTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                              "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 8613,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6295:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6295:122:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8620,
                      "nodeType": "ExpressionStatement",
                      "src": "6295:122:18"
                    },
                    {
                      "assignments": [
                        8622
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8622,
                          "mutability": "mutable",
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8726,
                          "src": "6428:14:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8621,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6428:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8633,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8626,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8600,
                                "src": "6478:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8627,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8602,
                                "src": "6486:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8628,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8604,
                                "src": "6493:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8629,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8606,
                                "src": "6504:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8630,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8608,
                                "src": "6510:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8624,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "6467:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6467:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 8631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6467:47:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8623,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "6457:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6457:58:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6428:87:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8635,
                              "name": "queuedTransactions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8337,
                              "src": "6546:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 8637,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8636,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8622,
                              "src": "6565:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6546:26:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e",
                            "id": 8638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6586:63:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction hasn't been queued."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                            }
                          ],
                          "id": 8634,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6525:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6525:134:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8640,
                      "nodeType": "ExpressionStatement",
                      "src": "6525:134:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8642,
                                "name": "getBlockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8736,
                                "src": "6690:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 8643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6690:19:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8644,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8608,
                              "src": "6713:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6690:26:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e",
                            "id": 8646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6730:71:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction hasn't surpassed time lock."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                            }
                          ],
                          "id": 8641,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6669:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6669:142:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8648,
                      "nodeType": "ExpressionStatement",
                      "src": "6669:142:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8650,
                                "name": "getBlockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8736,
                                "src": "6842:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 8651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6842:19:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8654,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8319,
                                  "src": "6873:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8652,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8608,
                                  "src": "6865:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 291,
                                "src": "6865:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6865:21:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6842:44:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e",
                            "id": 8657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6900:53:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction is stale."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                            }
                          ],
                          "id": 8649,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6821:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6821:142:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8659,
                      "nodeType": "ExpressionStatement",
                      "src": "6821:142:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8660,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8337,
                            "src": "6974:18:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 8662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8661,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8622,
                            "src": "6993:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6974:26:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7003:5:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "6974:34:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8665,
                      "nodeType": "ExpressionStatement",
                      "src": "6974:34:18"
                    },
                    {
                      "assignments": [
                        8667
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8667,
                          "mutability": "mutable",
                          "name": "callData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8726,
                          "src": "7019:21:18",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8666,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "7019:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8668,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7019:21:18"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8671,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8604,
                                "src": "7061:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 8670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7055:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 8669,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "7055:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7055:16:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 8673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7055:23:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7082:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7055:28:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 8697,
                        "nodeType": "Block",
                        "src": "7131:141:18",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8681,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8667,
                                "src": "7145:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 8689,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8604,
                                                "src": "7213:9:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              ],
                                              "id": 8688,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "7207:5:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                "typeString": "type(bytes storage pointer)"
                                              },
                                              "typeName": {
                                                "id": 8687,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7207:5:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 8690,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7207:16:18",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 8686,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "7197:9:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 8691,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7197:27:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 8685,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7190:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": {
                                        "id": 8684,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7190:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7190:35:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 8693,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8606,
                                    "src": "7243:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8682,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "7156:3:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 8683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7156:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 8694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7156:105:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "src": "7145:116:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 8696,
                            "nodeType": "ExpressionStatement",
                            "src": "7145:116:18"
                          }
                        ]
                      },
                      "id": 8698,
                      "nodeType": "IfStatement",
                      "src": "7051:221:18",
                      "trueBody": {
                        "id": 8680,
                        "nodeType": "Block",
                        "src": "7085:40:18",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8676,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8667,
                                "src": "7099:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8677,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8606,
                                "src": "7110:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "src": "7099:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 8679,
                            "nodeType": "ExpressionStatement",
                            "src": "7099:15:18"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        8700,
                        8702
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8700,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8726,
                          "src": "7342:12:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8699,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "7342:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8702,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8726,
                          "src": "7356:23:18",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8701,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "7356:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8709,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8707,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8667,
                            "src": "7421:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8703,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8600,
                              "src": "7395:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 8704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7395:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 8706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 8705,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8602,
                              "src": "7414:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "7395:25:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 8708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7395:35:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7341:89:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8711,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8700,
                            "src": "7461:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                            "id": 8712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7482:63:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction execution reverted."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                            }
                          ],
                          "id": 8710,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7440:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7440:115:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8714,
                      "nodeType": "ExpressionStatement",
                      "src": "7440:115:18"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8716,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8622,
                            "src": "7590:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8717,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8600,
                            "src": "7598:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8718,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8602,
                            "src": "7606:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8719,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8604,
                            "src": "7613:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8720,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8606,
                            "src": "7624:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8721,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8608,
                            "src": "7630:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8715,
                          "name": "ExecuteTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8302,
                          "src": "7571:18:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 8722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7571:63:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8723,
                      "nodeType": "EmitStatement",
                      "src": "7566:68:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8724,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8702,
                        "src": "7652:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 8612,
                      "id": 8725,
                      "nodeType": "Return",
                      "src": "7645:17:18"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0825f38f",
                "id": 8727,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "executeTransaction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8609,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8600,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6122:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8599,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6122:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8602,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6146:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8601,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6146:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8604,
                      "mutability": "mutable",
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6169:23:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8603,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "6169:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8606,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6202:17:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8605,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6202:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8608,
                      "mutability": "mutable",
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6229:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6229:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6112:134:18"
                },
                "returnParameters": {
                  "id": 8612,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8611,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "6271:12:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8610,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6271:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6270:14:18"
                },
                "scope": 8737,
                "src": "6085:1584:18",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8735,
                  "nodeType": "Block",
                  "src": "7736:101:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8732,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "7815:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 8733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7815:15:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 8731,
                      "id": 8734,
                      "nodeType": "Return",
                      "src": "7808:22:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 8736,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getBlockTimestamp",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8728,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7701:2:18"
                },
                "returnParameters": {
                  "id": 8731,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8730,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8736,
                      "src": "7727:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8729,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7727:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7726:9:18"
                },
                "scope": 8737,
                "src": "7675:162:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 8738,
            "src": "1793:6046:18"
          }
        ],
        "src": "1715:6125:18"
      }
    },
    "contracts/interfaces/IERC20.sol": {
      "id": 19,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20.sol",
        "exportedSymbols": {
          "IERC20": [
            8803
          ]
        },
        "id": 8804,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8739,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "32:23:19"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 8803,
            "linearizedBaseContracts": [
              8803
            ],
            "name": "IERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 8744,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8740,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "100:2:19"
                },
                "returnParameters": {
                  "id": 8743,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8742,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8744,
                      "src": "126:7:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8741,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "126:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "125:9:19"
                },
                "scope": 8803,
                "src": "80:55:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 8751,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8747,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8746,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8751,
                      "src": "160:15:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8745,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "160:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "159:17:19"
                },
                "returnParameters": {
                  "id": 8750,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8749,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8751,
                      "src": "200:7:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8748,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "200:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "199:9:19"
                },
                "scope": 8803,
                "src": "141:68:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 8760,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8756,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8753,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8760,
                      "src": "234:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8752,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "234:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8755,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8760,
                      "src": "249:15:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8754,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "249:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "233:32:19"
                },
                "returnParameters": {
                  "id": 8759,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8758,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8760,
                      "src": "313:7:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "313:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "312:9:19"
                },
                "scope": 8803,
                "src": "215:107:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 8769,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8765,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8762,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8769,
                      "src": "345:15:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8761,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "345:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8764,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8769,
                      "src": "362:14:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8763,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "362:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "344:33:19"
                },
                "returnParameters": {
                  "id": 8768,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8767,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8769,
                      "src": "396:4:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8766,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "396:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "395:6:19"
                },
                "scope": 8803,
                "src": "328:74:19",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8777,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8776,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8771,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8777,
                      "src": "423:20:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8770,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "423:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8773,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8777,
                      "src": "445:18:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8772,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "445:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8775,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8777,
                      "src": "465:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8774,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "465:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "422:57:19"
                },
                "src": "408:72:19"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8785,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8784,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8779,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8785,
                      "src": "509:21:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8778,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "509:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8781,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8785,
                      "src": "540:23:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8780,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "540:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8783,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8785,
                      "src": "573:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8782,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "573:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "499:93:19"
                },
                "src": "485:108:19"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 8802,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8800,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8787,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "640:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8786,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "640:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8789,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "663:15:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8788,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "663:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8791,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "688:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8790,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "688:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8793,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "711:16:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8792,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8795,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "737:7:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 8794,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "737:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8797,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "754:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8796,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "754:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8799,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8802,
                      "src": "773:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8798,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "773:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "630:158:19"
                },
                "returnParameters": {
                  "id": 8801,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "797:0:19"
                },
                "scope": 8803,
                "src": "615:183:19",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8804,
            "src": "57:743:19"
          }
        ],
        "src": "32:769:19"
      }
    },
    "contracts/interfaces/IGovernanceToken.sol": {
      "id": 20,
      "AST": {
        "absolutePath": "contracts/interfaces/IGovernanceToken.sol",
        "exportedSymbols": {
          "IGovernanceToken": [
            9031
          ]
        },
        "id": 9032,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8805,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:20"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 9031,
            "linearizedBaseContracts": [
              9031
            ],
            "name": "IGovernanceToken",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 8810,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8806,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "125:2:20"
                },
                "returnParameters": {
                  "id": 8809,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8808,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8810,
                      "src": "151:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "151:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "150:9:20"
                },
                "scope": 9031,
                "src": "105:55:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 8817,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8813,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8812,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8817,
                      "src": "185:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8811,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "185:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "184:17:20"
                },
                "returnParameters": {
                  "id": 8816,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8815,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8817,
                      "src": "225:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8814,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "225:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "224:9:20"
                },
                "scope": 9031,
                "src": "166:68:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 8826,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8822,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8819,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8826,
                      "src": "259:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8818,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "259:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8821,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8826,
                      "src": "274:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8820,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "274:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "258:32:20"
                },
                "returnParameters": {
                  "id": 8825,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8824,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8826,
                      "src": "338:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8823,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "337:9:20"
                },
                "scope": 9031,
                "src": "240:107:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 8835,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8831,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8828,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8835,
                      "src": "370:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8827,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "370:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8830,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8835,
                      "src": "387:14:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8829,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "387:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "369:33:20"
                },
                "returnParameters": {
                  "id": 8834,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8833,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8835,
                      "src": "421:4:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8832,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "421:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "420:6:20"
                },
                "scope": 9031,
                "src": "353:74:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8843,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8842,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8837,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8843,
                      "src": "448:20:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8836,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "448:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8839,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8843,
                      "src": "470:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8838,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "470:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8841,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8843,
                      "src": "490:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8840,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "490:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "447:57:20"
                },
                "src": "433:72:20"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8851,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8850,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8845,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8851,
                      "src": "534:21:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8844,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "534:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8847,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8851,
                      "src": "565:23:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8846,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "565:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8849,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8851,
                      "src": "598:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8848,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "598:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "524:93:20"
                },
                "src": "510:108:20"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 8868,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8866,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8853,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "665:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8852,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "665:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8855,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "688:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8854,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "688:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8857,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "713:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8856,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "713:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8859,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "736:16:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "736:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8861,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "762:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 8860,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "762:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8863,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "779:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8862,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "779:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8865,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8868,
                      "src": "798:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8864,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "798:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "655:158:20"
                },
                "returnParameters": {
                  "id": 8867,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "822:0:20"
                },
                "scope": 9031,
                "src": "640:183:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8874,
                "name": "Lock",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8873,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8870,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8874,
                      "src": "863:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8869,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "863:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8872,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8874,
                      "src": "883:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8871,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "883:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "862:35:20"
                },
                "src": "852:46:20"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "355274ea",
                "id": 8879,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "cap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8875,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "916:2:20"
                },
                "returnParameters": {
                  "id": 8878,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8877,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8879,
                      "src": "942:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8876,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "942:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "941:9:20"
                },
                "scope": 9031,
                "src": "904:47:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "40346c49",
                "id": 8884,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "capUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8882,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8881,
                      "mutability": "mutable",
                      "name": "_newCap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8884,
                      "src": "975:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8880,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "975:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "974:17:20"
                },
                "returnParameters": {
                  "id": 8883,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1000:0:20"
                },
                "scope": 9031,
                "src": "956:45:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c38533c6",
                "id": 8889,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockFromUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8887,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8886,
                      "mutability": "mutable",
                      "name": "_newLockFrom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8889,
                      "src": "1030:20:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8885,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1030:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1029:22:20"
                },
                "returnParameters": {
                  "id": 8888,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1060:0:20"
                },
                "scope": 9031,
                "src": "1006:55:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0cb285e2",
                "id": 8894,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockToUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8892,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8891,
                      "mutability": "mutable",
                      "name": "_newLockTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8894,
                      "src": "1088:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8890,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1088:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1087:20:20"
                },
                "returnParameters": {
                  "id": 8893,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1116:0:20"
                },
                "scope": 9031,
                "src": "1066:51:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fd3d27b8",
                "id": 8899,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "unlockedSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8895,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1145:2:20"
                },
                "returnParameters": {
                  "id": 8898,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8897,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8899,
                      "src": "1171:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8896,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1171:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1170:9:20"
                },
                "scope": 9031,
                "src": "1122:58:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ca5c7b91",
                "id": 8904,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockedSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8900,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1206:2:20"
                },
                "returnParameters": {
                  "id": 8903,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8902,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8904,
                      "src": "1232:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8901,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1232:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1231:9:20"
                },
                "scope": 9031,
                "src": "1185:56:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "9358928b",
                "id": 8909,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "circulatingSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8905,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1272:2:20"
                },
                "returnParameters": {
                  "id": 8908,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8907,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8909,
                      "src": "1298:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8906,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1298:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1297:9:20"
                },
                "scope": 9031,
                "src": "1246:61:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3a1aae35",
                "id": 8914,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalLock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8910,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1330:2:20"
                },
                "returnParameters": {
                  "id": 8913,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8912,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8914,
                      "src": "1356:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8911,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1356:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1355:9:20"
                },
                "scope": 9031,
                "src": "1312:53:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "40c10f19",
                "id": 8921,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8919,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8916,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8921,
                      "src": "1384:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8915,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1384:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8918,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8921,
                      "src": "1397:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8917,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1397:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1383:30:20"
                },
                "returnParameters": {
                  "id": 8920,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1422:0:20"
                },
                "scope": 9031,
                "src": "1370:53:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "e4c5ff46",
                "id": 8928,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "manualMint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8926,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8923,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8928,
                      "src": "1448:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8922,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1448:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8925,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8928,
                      "src": "1461:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8924,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1461:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1447:30:20"
                },
                "returnParameters": {
                  "id": 8927,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1486:0:20"
                },
                "scope": 9031,
                "src": "1428:59:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "4b0ee02a",
                "id": 8935,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalBalanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8931,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8930,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8935,
                      "src": "1516:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8929,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1516:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1515:17:20"
                },
                "returnParameters": {
                  "id": 8934,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8933,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8935,
                      "src": "1556:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8932,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1556:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1555:9:20"
                },
                "scope": 9031,
                "src": "1492:73:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5a46d3b5",
                "id": 8942,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8938,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8937,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8942,
                      "src": "1586:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8936,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1586:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1585:17:20"
                },
                "returnParameters": {
                  "id": 8941,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8940,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8942,
                      "src": "1626:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8939,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1626:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1625:9:20"
                },
                "scope": 9031,
                "src": "1570:65:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "89a2867c",
                "id": 8949,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lastUnlockBlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8945,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8944,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8949,
                      "src": "1665:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8943,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1665:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1664:17:20"
                },
                "returnParameters": {
                  "id": 8948,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8947,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8949,
                      "src": "1705:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8946,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1705:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1704:9:20"
                },
                "scope": 9031,
                "src": "1640:74:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "282d3fdf",
                "id": 8956,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8954,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8951,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "1733:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8950,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1733:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8953,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "1750:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8952,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1750:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1732:34:20"
                },
                "returnParameters": {
                  "id": 8955,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1775:0:20"
                },
                "scope": 9031,
                "src": "1719:57:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "202b1760",
                "id": 8963,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "canUnlockAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8959,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8958,
                      "mutability": "mutable",
                      "name": "_holder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8963,
                      "src": "1806:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8957,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1806:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1805:17:20"
                },
                "returnParameters": {
                  "id": 8962,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8961,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8963,
                      "src": "1846:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8960,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1846:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1845:9:20"
                },
                "scope": 9031,
                "src": "1781:74:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a69df4b5",
                "id": 8966,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "unlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8964,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1875:2:20"
                },
                "returnParameters": {
                  "id": 8965,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1886:0:20"
                },
                "scope": 9031,
                "src": "1860:27:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a3a7e7f3",
                "id": 8971,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferAll",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8969,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8968,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8971,
                      "src": "1913:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8967,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1913:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1912:13:20"
                },
                "returnParameters": {
                  "id": 8970,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1934:0:20"
                },
                "scope": 9031,
                "src": "1892:43:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8979,
                "name": "DelegateChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8973,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8979,
                      "src": "2370:25:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8972,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2370:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8975,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "fromDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8979,
                      "src": "2405:28:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8974,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2405:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8977,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "toDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8979,
                      "src": "2443:26:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8976,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2443:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2360:115:20"
                },
                "src": "2339:137:20"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8987,
                "name": "DelegateVotesChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8986,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8981,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "delegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8987,
                      "src": "2518:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8980,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2518:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8983,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "previousBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8987,
                      "src": "2552:23:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8982,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2552:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8985,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "newBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8987,
                      "src": "2585:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8984,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2585:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2508:101:20"
                },
                "src": "2482:128:20"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "587cde1e",
                "id": 8994,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "delegates",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8990,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8989,
                      "mutability": "mutable",
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8994,
                      "src": "2635:17:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8988,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2635:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2634:19:20"
                },
                "returnParameters": {
                  "id": 8993,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8992,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8994,
                      "src": "2677:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8991,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2677:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2676:9:20"
                },
                "scope": 9031,
                "src": "2616:70:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5c19a95c",
                "id": 8999,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "delegate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8997,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8996,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8999,
                      "src": "2709:17:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8995,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2709:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2708:19:20"
                },
                "returnParameters": {
                  "id": 8998,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2736:0:20"
                },
                "scope": 9031,
                "src": "2691:46:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c3cda520",
                "id": 9014,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "delegateBySig",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9012,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9001,
                      "mutability": "mutable",
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2765:17:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9000,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2765:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9003,
                      "mutability": "mutable",
                      "name": "nonce",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2784:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9002,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2784:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9005,
                      "mutability": "mutable",
                      "name": "expiry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2799:14:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9004,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2799:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9007,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2815:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 9006,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2815:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9009,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2824:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9008,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2824:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9011,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9014,
                      "src": "2835:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9010,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2835:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2764:81:20"
                },
                "returnParameters": {
                  "id": 9013,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2854:0:20"
                },
                "scope": 9031,
                "src": "2742:113:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "b4b5ea57",
                "id": 9021,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getCurrentVotes",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9017,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9016,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9021,
                      "src": "2885:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9015,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2885:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2884:17:20"
                },
                "returnParameters": {
                  "id": 9020,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9019,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9021,
                      "src": "2925:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9018,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2925:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2924:9:20"
                },
                "scope": 9031,
                "src": "2860:74:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "782d6fe1",
                "id": 9030,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPriorVotes",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9026,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9023,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9030,
                      "src": "2962:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9022,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2962:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9025,
                      "mutability": "mutable",
                      "name": "blockNumber",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9030,
                      "src": "2979:19:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9024,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2979:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2961:38:20"
                },
                "returnParameters": {
                  "id": 9029,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9028,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9030,
                      "src": "3023:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9027,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3023:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3022:9:20"
                },
                "scope": 9031,
                "src": "2939:93:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9032,
            "src": "58:2976:20"
          }
        ],
        "src": "33:3002:20"
      }
    },
    "contracts/interfaces/IMasterBreeder.sol": {
      "id": 21,
      "AST": {
        "absolutePath": "contracts/interfaces/IMasterBreeder.sol",
        "exportedSymbols": {
          "IMasterBreeder": [
            9369
          ]
        },
        "id": 9370,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9033,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:21"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 9034,
            "nodeType": "ImportDirective",
            "scope": 9370,
            "sourceUnit": 1046,
            "src": "58:56:21",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 9369,
            "linearizedBaseContracts": [
              9369
            ],
            "name": "IMasterBreeder",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 9042,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9041,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9036,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9042,
                      "src": "161:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9035,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "161:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9038,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9042,
                      "src": "183:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9037,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "183:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9040,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9042,
                      "src": "204:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9039,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "204:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "160:59:21"
                },
                "src": "147:73:21"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9050,
                "name": "Withdraw",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9049,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9044,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9050,
                      "src": "240:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9043,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "240:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9046,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9050,
                      "src": "262:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9045,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "262:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9048,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9050,
                      "src": "283:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9047,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "283:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "239:59:21"
                },
                "src": "225:74:21"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9058,
                "name": "EmergencyWithdraw",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9057,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9052,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9058,
                      "src": "337:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9051,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "337:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9054,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9058,
                      "src": "367:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9053,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "367:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9056,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9058,
                      "src": "396:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9055,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "396:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "327:89:21"
                },
                "src": "304:113:21"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9068,
                "name": "SendGovernanceTokenReward",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9067,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9060,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9068,
                      "src": "463:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9059,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "463:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9062,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9068,
                      "src": "493:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9061,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "493:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9064,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9068,
                      "src": "522:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9063,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "522:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9066,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "lockAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9068,
                      "src": "546:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "546:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "453:117:21"
                },
                "src": "422:149:21"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ce2529c9",
                "id": 9075,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "poolId1",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9071,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9070,
                      "mutability": "mutable",
                      "name": "addr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9075,
                      "src": "594:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9069,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "594:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "593:14:21"
                },
                "returnParameters": {
                  "id": 9074,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9073,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9075,
                      "src": "626:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9072,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "626:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "625:9:21"
                },
                "scope": 9369,
                "src": "577:58:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "93f1a40b",
                "id": 9086,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "userInfo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9080,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9077,
                      "mutability": "mutable",
                      "name": "poolId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9086,
                      "src": "658:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9076,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "658:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9079,
                      "mutability": "mutable",
                      "name": "addr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9086,
                      "src": "674:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9078,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "674:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "657:30:21"
                },
                "returnParameters": {
                  "id": 9085,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9082,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9086,
                      "src": "711:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9084,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9086,
                      "src": "720:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9083,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "720:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "710:18:21"
                },
                "scope": 9369,
                "src": "640:89:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "cbd258b5",
                "id": 9093,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "poolExistence",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9089,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9088,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9093,
                      "src": "757:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9087,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "757:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "756:14:21"
                },
                "returnParameters": {
                  "id": 9092,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9091,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9093,
                      "src": "794:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9090,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "794:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "793:6:21"
                },
                "scope": 9369,
                "src": "734:66:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "081e3eda",
                "id": 9098,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "poolLength",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9094,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "825:2:21"
                },
                "returnParameters": {
                  "id": 9097,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9096,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9098,
                      "src": "851:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9095,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "851:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "850:9:21"
                },
                "scope": 9369,
                "src": "806:54:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1eaaa045",
                "id": 9107,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9105,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9100,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9107,
                      "src": "878:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "878:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9102,
                      "mutability": "mutable",
                      "name": "_lpToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9107,
                      "src": "899:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9101,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "899:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9104,
                      "mutability": "mutable",
                      "name": "_withUpdate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9107,
                      "src": "916:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9103,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "916:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "877:56:21"
                },
                "returnParameters": {
                  "id": 9106,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "942:0:21"
                },
                "scope": 9369,
                "src": "865:78:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "64482f79",
                "id": 9116,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "set",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9114,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9109,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9116,
                      "src": "961:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9108,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "961:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9111,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9116,
                      "src": "975:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9110,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "975:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9113,
                      "mutability": "mutable",
                      "name": "_withUpdate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9116,
                      "src": "996:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9112,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "996:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "960:53:21"
                },
                "returnParameters": {
                  "id": 9115,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1022:0:21"
                },
                "scope": 9369,
                "src": "948:75:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "630b5ba1",
                "id": 9119,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "massUpdatePools",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9117,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1052:2:21"
                },
                "returnParameters": {
                  "id": 9118,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1063:0:21"
                },
                "scope": 9369,
                "src": "1028:36:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "51eb05a6",
                "id": 9124,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "updatePool",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9122,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9121,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9124,
                      "src": "1089:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9120,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1089:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1088:14:21"
                },
                "returnParameters": {
                  "id": 9123,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1111:0:21"
                },
                "scope": 9369,
                "src": "1069:43:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8dbb1e3a",
                "id": 9133,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getMultiplier",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9129,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9126,
                      "mutability": "mutable",
                      "name": "_from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9133,
                      "src": "1140:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1140:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9128,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9133,
                      "src": "1155:11:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9127,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1155:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1139:28:21"
                },
                "returnParameters": {
                  "id": 9132,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9131,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9133,
                      "src": "1191:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9130,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1191:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1190:9:21"
                },
                "scope": 9369,
                "src": "1117:83:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c8ed7680",
                "id": 9152,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPoolReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9140,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9135,
                      "mutability": "mutable",
                      "name": "_from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1228:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1228:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9137,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1243:11:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9136,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1243:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9139,
                      "mutability": "mutable",
                      "name": "_allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1256:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9138,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1256:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1227:49:21"
                },
                "returnParameters": {
                  "id": 9151,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9142,
                      "mutability": "mutable",
                      "name": "forDev",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1307:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9141,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1307:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9144,
                      "mutability": "mutable",
                      "name": "forFarmer",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1329:17:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9143,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1329:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9146,
                      "mutability": "mutable",
                      "name": "forLP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1354:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1354:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9148,
                      "mutability": "mutable",
                      "name": "forCom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1375:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9147,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1375:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9150,
                      "mutability": "mutable",
                      "name": "forFounders",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9152,
                      "src": "1397:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9149,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1397:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1299:123:21"
                },
                "scope": 9369,
                "src": "1205:218:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "98969e82",
                "id": 9161,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "pendingReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9157,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9154,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9161,
                      "src": "1451:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9153,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1451:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9156,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9161,
                      "src": "1465:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9155,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1465:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1450:29:21"
                },
                "returnParameters": {
                  "id": 9160,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9159,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9161,
                      "src": "1503:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9158,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1503:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1502:9:21"
                },
                "scope": 9369,
                "src": "1428:84:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5eac6239",
                "id": 9167,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "claimRewards",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9165,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9164,
                      "mutability": "mutable",
                      "name": "_pids",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9167,
                      "src": "1539:22:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1539:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9163,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1539:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1538:24:21"
                },
                "returnParameters": {
                  "id": 9166,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1571:0:21"
                },
                "scope": 9369,
                "src": "1517:55:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ae169a50",
                "id": 9172,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "claimReward",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9170,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9169,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "1598:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1598:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1597:14:21"
                },
                "returnParameters": {
                  "id": 9171,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1620:0:21"
                },
                "scope": 9369,
                "src": "1577:44:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "929c6971",
                "id": 9179,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getGlobalAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9175,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9174,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9179,
                      "src": "1651:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9173,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1651:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1650:15:21"
                },
                "returnParameters": {
                  "id": 9178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9177,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9179,
                      "src": "1689:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9176,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1689:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1688:9:21"
                },
                "scope": 9369,
                "src": "1626:72:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5c5e490b",
                "id": 9186,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getGlobalRefAmount",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9182,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9181,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9186,
                      "src": "1731:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9180,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1731:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1730:15:21"
                },
                "returnParameters": {
                  "id": 9185,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9184,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9186,
                      "src": "1769:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9183,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1769:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1768:9:21"
                },
                "scope": 9369,
                "src": "1703:75:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "36ebcde6",
                "id": 9193,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getTotalRefs",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9189,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9188,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9193,
                      "src": "1805:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9187,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1805:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1804:15:21"
                },
                "returnParameters": {
                  "id": 9192,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9191,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9193,
                      "src": "1843:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9190,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1843:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1842:9:21"
                },
                "scope": 9369,
                "src": "1783:69:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd77b9fd",
                "id": 9202,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getRefValueOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9198,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9195,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9202,
                      "src": "1880:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9194,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1880:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9197,
                      "mutability": "mutable",
                      "name": "_user2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9202,
                      "src": "1895:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9196,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1895:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1879:31:21"
                },
                "returnParameters": {
                  "id": 9201,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9200,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9202,
                      "src": "1934:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9199,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1934:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1933:9:21"
                },
                "scope": 9369,
                "src": "1857:86:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8dbdbe6d",
                "id": 9211,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9209,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9204,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9211,
                      "src": "1965:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9203,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1965:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9206,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9211,
                      "src": "1979:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1979:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9208,
                      "mutability": "mutable",
                      "name": "_ref",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9211,
                      "src": "1996:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9207,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1996:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1964:45:21"
                },
                "returnParameters": {
                  "id": 9210,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2018:0:21"
                },
                "scope": 9369,
                "src": "1948:71:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0ad58d2f",
                "id": 9220,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9218,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9213,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9220,
                      "src": "2042:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9212,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2042:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9215,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9220,
                      "src": "2056:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9214,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2056:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9217,
                      "mutability": "mutable",
                      "name": "_ref",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9220,
                      "src": "2073:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9216,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2073:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2041:45:21"
                },
                "returnParameters": {
                  "id": 9219,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2095:0:21"
                },
                "scope": 9369,
                "src": "2024:72:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5312ea8e",
                "id": 9225,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "emergencyWithdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9223,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9222,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "2128:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9221,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2128:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2127:14:21"
                },
                "returnParameters": {
                  "id": 9224,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2150:0:21"
                },
                "scope": 9369,
                "src": "2101:50:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8d88a90e",
                "id": 9230,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "dev",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9228,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9227,
                      "mutability": "mutable",
                      "name": "_devaddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9230,
                      "src": "2169:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9226,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2169:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2168:18:21"
                },
                "returnParameters": {
                  "id": 9229,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2195:0:21"
                },
                "scope": 9369,
                "src": "2156:40:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "245b211d",
                "id": 9235,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "bonusFinishUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9233,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9232,
                      "mutability": "mutable",
                      "name": "_newFinish",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9235,
                      "src": "2228:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9231,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2228:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2227:20:21"
                },
                "returnParameters": {
                  "id": 9234,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2256:0:21"
                },
                "scope": 9369,
                "src": "2201:56:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "354affb7",
                "id": 9241,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "halvingUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9239,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9238,
                      "mutability": "mutable",
                      "name": "_newHalving",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9241,
                      "src": "2285:28:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9237,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2285:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2284:30:21"
                },
                "returnParameters": {
                  "id": 9240,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2323:0:21"
                },
                "scope": 9369,
                "src": "2262:62:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "4dbf85ca",
                "id": 9246,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lpUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9244,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9243,
                      "mutability": "mutable",
                      "name": "_newLP",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9246,
                      "src": "2347:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9242,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2347:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2346:16:21"
                },
                "returnParameters": {
                  "id": 9245,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2371:0:21"
                },
                "scope": 9369,
                "src": "2329:43:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c749d614",
                "id": 9251,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "comUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9249,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9248,
                      "mutability": "mutable",
                      "name": "_newCom",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9251,
                      "src": "2396:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9247,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2396:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2395:17:21"
                },
                "returnParameters": {
                  "id": 9250,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2421:0:21"
                },
                "scope": 9369,
                "src": "2377:45:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "30fb8e0e",
                "id": 9256,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "founderUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9254,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9253,
                      "mutability": "mutable",
                      "name": "_newFounder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9256,
                      "src": "2450:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9252,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2450:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2449:21:21"
                },
                "returnParameters": {
                  "id": 9255,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2479:0:21"
                },
                "scope": 9369,
                "src": "2427:53:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3d479cd5",
                "id": 9261,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rewardUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9259,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9258,
                      "mutability": "mutable",
                      "name": "_newReward",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9261,
                      "src": "2507:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9257,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2507:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2506:20:21"
                },
                "returnParameters": {
                  "id": 9260,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2535:0:21"
                },
                "scope": 9369,
                "src": "2485:51:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "46664064",
                "id": 9267,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rewardMulUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9265,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9264,
                      "mutability": "mutable",
                      "name": "_newMulReward",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9267,
                      "src": "2566:30:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2566:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9263,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2566:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2565:32:21"
                },
                "returnParameters": {
                  "id": 9266,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2606:0:21"
                },
                "scope": 9369,
                "src": "2541:66:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "01b689c0",
                "id": 9272,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9270,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9269,
                      "mutability": "mutable",
                      "name": "_newlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9272,
                      "src": "2632:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2632:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2631:18:21"
                },
                "returnParameters": {
                  "id": 9271,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2658:0:21"
                },
                "scope": 9369,
                "src": "2612:47:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "b6066962",
                "id": 9277,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockdevUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9275,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9274,
                      "mutability": "mutable",
                      "name": "_newdevlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9277,
                      "src": "2687:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9273,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2687:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2686:21:21"
                },
                "returnParameters": {
                  "id": 9276,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2716:0:21"
                },
                "scope": 9369,
                "src": "2664:53:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f2ffc22c",
                "id": 9282,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "locklpUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9280,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9279,
                      "mutability": "mutable",
                      "name": "_newlplock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9282,
                      "src": "2744:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9278,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2744:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2743:20:21"
                },
                "returnParameters": {
                  "id": 9281,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2772:0:21"
                },
                "scope": 9369,
                "src": "2722:51:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c663baa6",
                "id": 9287,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockcomUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9285,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9284,
                      "mutability": "mutable",
                      "name": "_newcomlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9287,
                      "src": "2801:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9283,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2801:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2800:21:21"
                },
                "returnParameters": {
                  "id": 9286,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2830:0:21"
                },
                "scope": 9369,
                "src": "2778:53:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "de988524",
                "id": 9292,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "lockfounderUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9290,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9289,
                      "mutability": "mutable",
                      "name": "_newfounderlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9292,
                      "src": "2863:23:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9288,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2863:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2862:25:21"
                },
                "returnParameters": {
                  "id": 9291,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2896:0:21"
                },
                "scope": 9369,
                "src": "2836:61:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "24b95c3e",
                "id": 9297,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "starblockUpdate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9295,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9294,
                      "mutability": "mutable",
                      "name": "_newstarblock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9297,
                      "src": "2927:21:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2927:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2926:23:21"
                },
                "returnParameters": {
                  "id": 9296,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2958:0:21"
                },
                "scope": 9369,
                "src": "2902:57:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1d465c82",
                "id": 9304,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getNewRewardPerBlock",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9300,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9299,
                      "mutability": "mutable",
                      "name": "pid1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9304,
                      "src": "2994:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9298,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2994:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2993:14:21"
                },
                "returnParameters": {
                  "id": 9303,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9302,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9304,
                      "src": "3031:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9301,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3031:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3030:9:21"
                },
                "scope": 9369,
                "src": "2964:76:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "09ae4d2c",
                "id": 9311,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "userDelta",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9307,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9306,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9311,
                      "src": "3064:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9305,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3064:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3063:14:21"
                },
                "returnParameters": {
                  "id": 9310,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9309,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9311,
                      "src": "3101:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9308,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3101:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3100:9:21"
                },
                "scope": 9369,
                "src": "3045:65:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6066debd",
                "id": 9320,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "reviseWithdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9318,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9313,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9320,
                      "src": "3139:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9312,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3139:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9315,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9320,
                      "src": "3153:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9314,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3153:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9317,
                      "mutability": "mutable",
                      "name": "_block",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9320,
                      "src": "3168:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9316,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3168:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3138:45:21"
                },
                "returnParameters": {
                  "id": 9319,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3192:0:21"
                },
                "scope": 9369,
                "src": "3115:78:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "82386d58",
                "id": 9329,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "reviseDeposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9327,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9322,
                      "mutability": "mutable",
                      "name": "_pid",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9329,
                      "src": "3221:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3221:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9324,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9329,
                      "src": "3235:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9323,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3235:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9326,
                      "mutability": "mutable",
                      "name": "_block",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9329,
                      "src": "3250:14:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9325,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3250:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3220:45:21"
                },
                "returnParameters": {
                  "id": 9328,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3274:0:21"
                },
                "scope": 9369,
                "src": "3198:77:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "847bdaa4",
                "id": 9335,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setStageStarts",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9333,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9332,
                      "mutability": "mutable",
                      "name": "_blockStarts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9335,
                      "src": "3304:29:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9330,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3304:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9331,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3304:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3303:31:21"
                },
                "returnParameters": {
                  "id": 9334,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3343:0:21"
                },
                "scope": 9369,
                "src": "3280:64:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "4af0e3e1",
                "id": 9341,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setStageEnds",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9339,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9338,
                      "mutability": "mutable",
                      "name": "_blockEnds",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9341,
                      "src": "3371:27:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3371:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9337,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3371:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3370:29:21"
                },
                "returnParameters": {
                  "id": 9340,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3408:0:21"
                },
                "scope": 9369,
                "src": "3349:60:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2a7b0107",
                "id": 9347,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setUserFeeStage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9345,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9344,
                      "mutability": "mutable",
                      "name": "_userFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9347,
                      "src": "3439:26:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3439:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9343,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3439:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3438:28:21"
                },
                "returnParameters": {
                  "id": 9346,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3475:0:21"
                },
                "scope": 9369,
                "src": "3414:62:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8cc883ce",
                "id": 9353,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDevFeeStage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9351,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9350,
                      "mutability": "mutable",
                      "name": "_devFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9353,
                      "src": "3505:25:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3505:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9349,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3505:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3504:27:21"
                },
                "returnParameters": {
                  "id": 9352,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3540:0:21"
                },
                "scope": 9369,
                "src": "3481:60:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fb075433",
                "id": 9358,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDevDepFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9356,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9355,
                      "mutability": "mutable",
                      "name": "_devDepFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9358,
                      "src": "3568:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9354,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3568:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3567:21:21"
                },
                "returnParameters": {
                  "id": 9357,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3597:0:21"
                },
                "scope": 9369,
                "src": "3546:52:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7c39c9c9",
                "id": 9363,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setUserDepFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9361,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9360,
                      "mutability": "mutable",
                      "name": "_usrDepFees",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9363,
                      "src": "3626:19:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9359,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3626:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3625:21:21"
                },
                "returnParameters": {
                  "id": 9362,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3655:0:21"
                },
                "scope": 9369,
                "src": "3603:53:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "eda67048",
                "id": 9368,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "reclaimTokenOwnership",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9366,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9365,
                      "mutability": "mutable",
                      "name": "_newOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9368,
                      "src": "3692:17:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9364,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3692:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3691:19:21"
                },
                "returnParameters": {
                  "id": 9367,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3719:0:21"
                },
                "scope": 9369,
                "src": "3661:59:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9370,
            "src": "116:3606:21"
          }
        ],
        "src": "33:3690:21"
      }
    },
    "contracts/interfaces/IPit.sol": {
      "id": 22,
      "AST": {
        "absolutePath": "contracts/interfaces/IPit.sol",
        "exportedSymbols": {
          "IPit": [
            9451
          ]
        },
        "id": 9452,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9371,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:22"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
            "id": 9372,
            "nodeType": "ImportDirective",
            "scope": 9452,
            "sourceUnit": 1046,
            "src": "58:56:22",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 9451,
            "linearizedBaseContracts": [
              9451
            ],
            "name": "IPit",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 9377,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9373,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "173:2:22"
                },
                "returnParameters": {
                  "id": 9376,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9375,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9377,
                      "src": "199:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9374,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "199:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "198:9:22"
                },
                "scope": 9451,
                "src": "153:55:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 9384,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9380,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9379,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9384,
                      "src": "233:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9378,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:17:22"
                },
                "returnParameters": {
                  "id": 9383,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9382,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9384,
                      "src": "273:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9381,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "273:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "272:9:22"
                },
                "scope": 9451,
                "src": "214:68:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 9393,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9389,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9386,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9393,
                      "src": "307:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9385,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "307:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9388,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9393,
                      "src": "322:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9387,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "322:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "306:32:22"
                },
                "returnParameters": {
                  "id": 9392,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9391,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9393,
                      "src": "386:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9390,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "386:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "385:9:22"
                },
                "scope": 9451,
                "src": "288:107:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 9402,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9395,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9402,
                      "src": "418:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9394,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "418:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9397,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9402,
                      "src": "435:14:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9396,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "435:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "417:33:22"
                },
                "returnParameters": {
                  "id": 9401,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9400,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9402,
                      "src": "469:4:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9399,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "469:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "468:6:22"
                },
                "scope": 9451,
                "src": "401:74:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9410,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9409,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9404,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9410,
                      "src": "496:20:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9403,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "496:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9406,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9410,
                      "src": "518:18:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "518:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9408,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9410,
                      "src": "538:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9407,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "538:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "495:57:22"
                },
                "src": "481:72:22"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9418,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9417,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9412,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9418,
                      "src": "582:21:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9411,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "582:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9414,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9418,
                      "src": "613:23:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9413,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "613:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9416,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9418,
                      "src": "646:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9415,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "646:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "572:93:22"
                },
                "src": "558:108:22"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 9435,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9433,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9420,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "713:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9419,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "713:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9422,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "736:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9421,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "736:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9424,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "761:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "761:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9426,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "784:16:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9425,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "784:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9428,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "810:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 9427,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "810:5:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9430,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "827:9:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9429,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "827:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9432,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9435,
                      "src": "846:9:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9431,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "846:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "703:158:22"
                },
                "returnParameters": {
                  "id": 9434,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "870:0:22"
                },
                "scope": 9451,
                "src": "688:183:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "05268cff",
                "id": 9440,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "govToken",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9436,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "905:2:22"
                },
                "returnParameters": {
                  "id": 9439,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9438,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9440,
                      "src": "926:6:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$1045",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9437,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1045,
                        "src": "926:6:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$1045",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "925:8:22"
                },
                "scope": 9451,
                "src": "888:46:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a59f3e0c",
                "id": 9445,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "enter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9443,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9442,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9445,
                      "src": "954:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9441,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "954:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "953:17:22"
                },
                "returnParameters": {
                  "id": 9444,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "979:0:22"
                },
                "scope": 9451,
                "src": "939:41:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "67dfd4c9",
                "id": 9450,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "leave",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9448,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9447,
                      "mutability": "mutable",
                      "name": "_share",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9450,
                      "src": "1000:14:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9446,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1000:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "999:16:22"
                },
                "returnParameters": {
                  "id": 9449,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1024:0:22"
                },
                "scope": 9451,
                "src": "985:40:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9452,
            "src": "116:911:22"
          }
        ],
        "src": "33:995:22"
      }
    },
    "contracts/mocks/ERC20Mock.sol": {
      "id": 23,
      "AST": {
        "absolutePath": "contracts/mocks/ERC20Mock.sol",
        "exportedSymbols": {
          "ERC20Mock": [
            9477
          ]
        },
        "id": 9478,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9453,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:23"
          },
          {
            "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
            "id": 9454,
            "nodeType": "ImportDirective",
            "scope": 9478,
            "sourceUnit": 968,
            "src": "58:55:23",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 9455,
                  "name": "ERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 967,
                  "src": "137:5:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$967",
                    "typeString": "contract ERC20"
                  }
                },
                "id": 9456,
                "nodeType": "InheritanceSpecifier",
                "src": "137:5:23"
              }
            ],
            "contractDependencies": [
              967,
              1045,
              1577
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9477,
            "linearizedBaseContracts": [
              9477,
              967,
              1045,
              1577
            ],
            "name": "ERC20Mock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9475,
                  "nodeType": "Block",
                  "src": "276:42:23",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9470,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "292:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "292:10:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9472,
                            "name": "supply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9462,
                            "src": "304:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9469,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 843,
                          "src": "286:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "286:25:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9474,
                      "nodeType": "ExpressionStatement",
                      "src": "286:25:23"
                    }
                  ]
                },
                "documentation": null,
                "id": 9476,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9465,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9458,
                        "src": "262:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9466,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9460,
                        "src": "268:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "id": 9467,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 9464,
                      "name": "ERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 967,
                      "src": "256:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ERC20_$967_$",
                        "typeString": "type(contract ERC20)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "256:19:23"
                  }
                ],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9463,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9458,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9476,
                      "src": "170:18:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9457,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "170:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9460,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9476,
                      "src": "198:20:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9459,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "198:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9462,
                      "mutability": "mutable",
                      "name": "supply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9476,
                      "src": "228:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9461,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "228:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "160:88:23"
                },
                "returnParameters": {
                  "id": 9468,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "276:0:23"
                },
                "scope": 9477,
                "src": "149:169:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9478,
            "src": "115:205:23"
          }
        ],
        "src": "33:288:23"
      }
    },
    "contracts/mocks/PitBreederExploitMock.sol": {
      "id": 24,
      "AST": {
        "absolutePath": "contracts/mocks/PitBreederExploitMock.sol",
        "exportedSymbols": {
          "PitBreederExploitMock": [
            9510
          ]
        },
        "id": 9511,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9479,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:24"
          },
          {
            "absolutePath": "contracts/PitBreeder.sol",
            "file": "../PitBreeder.sol",
            "id": 9480,
            "nodeType": "ImportDirective",
            "scope": 9511,
            "sourceUnit": 8257,
            "src": "58:27:24",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9510,
            "linearizedBaseContracts": [
              9510
            ],
            "name": "PitBreederExploitMock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "4aa50c26",
                "id": 9482,
                "mutability": "immutable",
                "name": "pitBreeder",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9510,
                "src": "124:38:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PitBreeder_$8256",
                  "typeString": "contract PitBreeder"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 9481,
                  "name": "PitBreeder",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 8256,
                  "src": "124:10:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_PitBreeder_$8256",
                    "typeString": "contract PitBreeder"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9493,
                  "nodeType": "Block",
                  "src": "209:53:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9487,
                          "name": "pitBreeder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9482,
                          "src": "219:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PitBreeder_$8256",
                            "typeString": "contract PitBreeder"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9489,
                              "name": "_pitBreeder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9484,
                              "src": "243:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9488,
                            "name": "PitBreeder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8256,
                            "src": "232:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_PitBreeder_$8256_$",
                              "typeString": "type(contract PitBreeder)"
                            }
                          },
                          "id": 9490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "232:23:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PitBreeder_$8256",
                            "typeString": "contract PitBreeder"
                          }
                        },
                        "src": "219:36:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PitBreeder_$8256",
                          "typeString": "contract PitBreeder"
                        }
                      },
                      "id": 9492,
                      "nodeType": "ExpressionStatement",
                      "src": "219:36:24"
                    }
                  ]
                },
                "documentation": null,
                "id": 9494,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9485,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9484,
                      "mutability": "mutable",
                      "name": "_pitBreeder",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9494,
                      "src": "181:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9483,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "181:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "180:21:24"
                },
                "returnParameters": {
                  "id": 9486,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "209:0:24"
                },
                "scope": 9510,
                "src": "169:93:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9508,
                  "nodeType": "Block",
                  "src": "326:51:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9504,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9496,
                            "src": "355:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9505,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9498,
                            "src": "363:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9501,
                            "name": "pitBreeder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9482,
                            "src": "336:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PitBreeder_$8256",
                              "typeString": "contract PitBreeder"
                            }
                          },
                          "id": 9503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "convert",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7705,
                          "src": "336:18:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address) external"
                          }
                        },
                        "id": 9506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "336:34:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9507,
                      "nodeType": "ExpressionStatement",
                      "src": "336:34:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bd1b820c",
                "id": 9509,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "convert",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9499,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9496,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9509,
                      "src": "285:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9495,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9498,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9509,
                      "src": "301:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9497,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "301:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "284:32:24"
                },
                "returnParameters": {
                  "id": 9500,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "326:0:24"
                },
                "scope": 9510,
                "src": "268:109:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9511,
            "src": "87:292:24"
          }
        ],
        "src": "33:347:24"
      }
    },
    "contracts/mocks/VenomSwapFactoryMock.sol": {
      "id": 25,
      "AST": {
        "absolutePath": "contracts/mocks/VenomSwapFactoryMock.sol",
        "exportedSymbols": {
          "VenomSwapFactoryMock": [
            9525
          ]
        },
        "id": 9526,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9512,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:25"
          },
          {
            "absolutePath": "elephantdexcore/contracts/UniswapV2Factory.sol",
            "file": "elephantdexcore/contracts/UniswapV2Factory.sol",
            "id": 9513,
            "nodeType": "ImportDirective",
            "scope": 9526,
            "sourceUnit": 10389,
            "src": "58:56:25",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 9514,
                  "name": "UniswapV2Factory",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 10388,
                  "src": "149:16:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniswapV2Factory_$10388",
                    "typeString": "contract UniswapV2Factory"
                  }
                },
                "id": 9515,
                "nodeType": "InheritanceSpecifier",
                "src": "149:16:25"
              }
            ],
            "contractDependencies": [
              10388,
              11735
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9525,
            "linearizedBaseContracts": [
              9525,
              10388,
              11735
            ],
            "name": "VenomSwapFactoryMock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9523,
                  "nodeType": "Block",
                  "src": "244:2:25",
                  "statements": []
                },
                "documentation": null,
                "id": 9524,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9520,
                        "name": "_feeToSetter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9517,
                        "src": "230:12:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 9521,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 9519,
                      "name": "UniswapV2Factory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10388,
                      "src": "213:16:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapV2Factory_$10388_$",
                        "typeString": "type(contract UniswapV2Factory)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "213:30:25"
                  }
                ],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9518,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9517,
                      "mutability": "mutable",
                      "name": "_feeToSetter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9524,
                      "src": "184:20:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9516,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "184:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "183:22:25"
                },
                "returnParameters": {
                  "id": 9522,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "244:0:25"
                },
                "scope": 9525,
                "src": "172:74:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9526,
            "src": "116:132:25"
          }
        ],
        "src": "33:216:25"
      }
    },
    "contracts/mocks/VenomSwapPairMock.sol": {
      "id": 26,
      "AST": {
        "absolutePath": "contracts/mocks/VenomSwapPairMock.sol",
        "exportedSymbols": {
          "VenomSwapPairMock": [
            9537
          ]
        },
        "id": 9538,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9527,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:26"
          },
          {
            "absolutePath": "elephantdexcore/contracts/UniswapV2Pair.sol",
            "file": "elephantdexcore/contracts/UniswapV2Pair.sol",
            "id": 9528,
            "nodeType": "ImportDirective",
            "scope": 9538,
            "sourceUnit": 11457,
            "src": "58:53:26",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 9529,
                  "name": "UniswapV2Pair",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11456,
                  "src": "143:13:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                    "typeString": "contract UniswapV2Pair"
                  }
                },
                "id": 9530,
                "nodeType": "InheritanceSpecifier",
                "src": "143:13:26"
              }
            ],
            "contractDependencies": [
              10170,
              11456
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9537,
            "linearizedBaseContracts": [
              9537,
              11456,
              10170
            ],
            "name": "VenomSwapPairMock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9535,
                  "nodeType": "Block",
                  "src": "200:2:26",
                  "statements": []
                },
                "documentation": null,
                "id": 9536,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [
                  {
                    "arguments": [],
                    "id": 9533,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 9532,
                      "name": "UniswapV2Pair",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11456,
                      "src": "184:13:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                        "typeString": "type(contract UniswapV2Pair)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "184:15:26"
                  }
                ],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9531,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "174:2:26"
                },
                "returnParameters": {
                  "id": 9534,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "200:0:26"
                },
                "scope": 9537,
                "src": "163:39:26",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9538,
            "src": "113:91:26"
          }
        ],
        "src": "33:172:26"
      }
    },
    "contracts/mocks/WETH9Mock.sol": {
      "id": 27,
      "AST": {
        "absolutePath": "contracts/mocks/WETH9Mock.sol",
        "exportedSymbols": {
          "WETH9Mock": [
            9781
          ]
        },
        "id": 9782,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9539,
            "literals": [
              "solidity",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:27"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9781,
            "linearizedBaseContracts": [
              9781
            ],
            "name": "WETH9Mock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "06fdde03",
                "id": 9542,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9781,
                "src": "83:36:27",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9540,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "83:6:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "57726170706564204574686572",
                  "id": 9541,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "104:15:27",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3",
                    "typeString": "literal_string \"Wrapped Ether\""
                  },
                  "value": "Wrapped Ether"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95d89b41",
                "id": 9545,
                "mutability": "mutable",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9781,
                "src": "125:29:27",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9543,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "125:6:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "57455448",
                  "id": 9544,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "148:6:27",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8",
                    "typeString": "literal_string \"WETH\""
                  },
                  "value": "WETH"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "313ce567",
                "id": 9548,
                "mutability": "mutable",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9781,
                "src": "160:26:27",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 9546,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "160:5:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 9547,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "184:2:27",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9556,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9555,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9550,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9556,
                      "src": "208:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9549,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "208:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9552,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9556,
                      "src": "229:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9551,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "229:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9554,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9556,
                      "src": "250:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9553,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "250:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "207:55:27"
                },
                "src": "193:70:27"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9564,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9563,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9558,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9564,
                      "src": "283:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9557,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "283:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9560,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9564,
                      "src": "304:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9559,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "304:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9562,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9564,
                      "src": "325:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9561,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "325:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "282:55:27"
                },
                "src": "268:70:27"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9570,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9566,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9570,
                      "src": "357:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9565,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "357:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9568,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9570,
                      "src": "378:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9567,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "378:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "356:34:27"
                },
                "src": "343:48:27"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9576,
                "name": "Withdrawal",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9572,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9576,
                      "src": "413:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9571,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "413:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9574,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9576,
                      "src": "434:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9573,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "434:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "412:34:27"
                },
                "src": "396:51:27"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 9580,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9781,
                "src": "453:44:27",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 9579,
                  "keyType": {
                    "id": 9577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "461:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "453:27:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 9578,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "472:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 9586,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9781,
                "src": "503:64:27",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 9585,
                  "keyType": {
                    "id": 9581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "511:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "503:47:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 9584,
                    "keyType": {
                      "id": 9582,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "530:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "522:27:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 9583,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "541:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9604,
                  "nodeType": "Block",
                  "src": "608:96:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9589,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9580,
                            "src": "618:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9592,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9590,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "628:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "628:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "618:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9593,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "643:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "643:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "618:34:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9596,
                      "nodeType": "ExpressionStatement",
                      "src": "618:34:27"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9598,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "675:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "675:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9600,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "687:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "687:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9597,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9570,
                          "src": "667:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "667:30:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9603,
                      "nodeType": "EmitStatement",
                      "src": "662:35:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d0e30db0",
                "id": 9605,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9587,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "590:2:27"
                },
                "returnParameters": {
                  "id": 9588,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "608:0:27"
                },
                "scope": 9781,
                "src": "574:130:27",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9641,
                  "nodeType": "Block",
                  "src": "748:184:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9611,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9580,
                                "src": "766:9:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9614,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9612,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "776:3:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "776:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "766:21:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9615,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9607,
                              "src": "791:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "766:28:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "57455448393a204572726f72",
                            "id": 9617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "796:14:27",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                              "typeString": "literal_string \"WETH9: Error\""
                            },
                            "value": "WETH9: Error"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                              "typeString": "literal_string \"WETH9: Error\""
                            }
                          ],
                          "id": 9610,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "758:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9618,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "758:53:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9619,
                      "nodeType": "ExpressionStatement",
                      "src": "758:53:27"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9620,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9580,
                            "src": "821:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9623,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9621,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "831:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "831:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "821:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9624,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9607,
                          "src": "846:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "821:28:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9626,
                      "nodeType": "ExpressionStatement",
                      "src": "821:28:27"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9632,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9607,
                            "src": "879:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9627,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "859:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "859:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "id": 9631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "859:19:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 9633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "859:24:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9634,
                      "nodeType": "ExpressionStatement",
                      "src": "859:24:27"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9636,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "909:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "909:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9638,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9607,
                            "src": "921:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9635,
                          "name": "Withdrawal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9576,
                          "src": "898:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "898:27:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9640,
                      "nodeType": "EmitStatement",
                      "src": "893:32:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2e1a7d4d",
                "id": 9642,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9608,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9607,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9642,
                      "src": "728:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9606,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "728:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "727:13:27"
                },
                "returnParameters": {
                  "id": 9609,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "748:0:27"
                },
                "scope": 9781,
                "src": "710:222:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9653,
                  "nodeType": "Block",
                  "src": "991:45:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9649,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "1016:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WETH9Mock_$9781",
                                "typeString": "contract WETH9Mock"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_WETH9Mock_$9781",
                                "typeString": "contract WETH9Mock"
                              }
                            ],
                            "id": 9648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1008:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9647,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1008:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 9650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1008:13:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1008:21:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 9646,
                      "id": 9652,
                      "nodeType": "Return",
                      "src": "1001:28:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 9654,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9643,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "958:2:27"
                },
                "returnParameters": {
                  "id": 9646,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9645,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9654,
                      "src": "982:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9644,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "982:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "981:9:27"
                },
                "scope": 9781,
                "src": "938:98:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9681,
                  "nodeType": "Block",
                  "src": "1107:115:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9663,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9586,
                              "src": "1117:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 9667,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9664,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1127:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1127:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1117:21:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9668,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9666,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9656,
                            "src": "1139:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1117:26:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9669,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9658,
                          "src": "1146:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1117:32:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9671,
                      "nodeType": "ExpressionStatement",
                      "src": "1117:32:27"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9673,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1173:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1173:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9675,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9656,
                            "src": "1185:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9676,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9658,
                            "src": "1190:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9672,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9556,
                          "src": "1164:8:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1164:30:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9678,
                      "nodeType": "EmitStatement",
                      "src": "1159:35:27"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1211:4:27",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9662,
                      "id": 9680,
                      "nodeType": "Return",
                      "src": "1204:11:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 9682,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9659,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9656,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9682,
                      "src": "1059:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1059:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9658,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9682,
                      "src": "1072:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9657,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1072:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1058:26:27"
                },
                "returnParameters": {
                  "id": 9662,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9661,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9682,
                      "src": "1101:4:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9660,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1101:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1100:6:27"
                },
                "scope": 9781,
                "src": "1042:180:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9698,
                  "nodeType": "Block",
                  "src": "1294:58:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9692,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1324:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1324:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9694,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9684,
                            "src": "1336:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9695,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9686,
                            "src": "1341:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9691,
                          "name": "transferFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9780,
                          "src": "1311:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) returns (bool)"
                          }
                        },
                        "id": 9696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1311:34:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 9690,
                      "id": 9697,
                      "nodeType": "Return",
                      "src": "1304:41:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 9699,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9687,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9684,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9699,
                      "src": "1246:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9683,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1246:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9686,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9699,
                      "src": "1259:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9685,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1259:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1245:26:27"
                },
                "returnParameters": {
                  "id": 9690,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9689,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9699,
                      "src": "1288:4:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9688,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1288:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1287:6:27"
                },
                "scope": 9781,
                "src": "1228:124:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9779,
                  "nodeType": "Block",
                  "src": "1471:395:27",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9711,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9580,
                                "src": "1489:9:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9713,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9712,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9701,
                                "src": "1499:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1489:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9714,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9705,
                              "src": "1507:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1489:21:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "57455448393a204572726f72",
                            "id": 9716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1512:14:27",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                              "typeString": "literal_string \"WETH9: Error\""
                            },
                            "value": "WETH9: Error"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                              "typeString": "literal_string \"WETH9: Error\""
                            }
                          ],
                          "id": 9710,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1481:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1481:46:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9718,
                      "nodeType": "ExpressionStatement",
                      "src": "1481:46:27"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9719,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9701,
                            "src": "1542:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9720,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1549:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1549:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1542:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9723,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9586,
                                "src": "1563:9:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 9725,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9724,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9701,
                                "src": "1573:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1563:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9728,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9726,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1578:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1578:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1563:26:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1601:2:27",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 9731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1602:1:27",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 9730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1593:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9729,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1593:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1593:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1563:41:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1542:62:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 9758,
                      "nodeType": "IfStatement",
                      "src": "1538:198:27",
                      "trueBody": {
                        "id": 9757,
                        "nodeType": "Block",
                        "src": "1606:130:27",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9737,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9586,
                                        "src": "1628:9:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 9739,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9738,
                                        "name": "src",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9701,
                                        "src": "1638:3:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1628:14:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 9742,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 9740,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1643:3:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 9741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1643:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1628:26:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9743,
                                    "name": "wad",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9705,
                                    "src": "1658:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1628:33:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "57455448393a204572726f72",
                                  "id": 9745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1663:14:27",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                                    "typeString": "literal_string \"WETH9: Error\""
                                  },
                                  "value": "WETH9: Error"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e71014504bf8a1f06b721ae994f4771e68d7f6b71c1a1f90c97c49d55f1ea53c",
                                    "typeString": "literal_string \"WETH9: Error\""
                                  }
                                ],
                                "id": 9736,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "1620:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 9746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1620:58:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 9747,
                            "nodeType": "ExpressionStatement",
                            "src": "1620:58:27"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 9755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9748,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9586,
                                    "src": "1692:9:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 9752,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9749,
                                    "name": "src",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9701,
                                    "src": "1702:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1692:14:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9753,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9750,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1707:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9751,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1707:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "1692:26:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 9754,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9705,
                                "src": "1722:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1692:33:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9756,
                            "nodeType": "ExpressionStatement",
                            "src": "1692:33:27"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9759,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9580,
                            "src": "1746:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9761,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9760,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9701,
                            "src": "1756:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1746:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9762,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9705,
                          "src": "1764:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1746:21:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9764,
                      "nodeType": "ExpressionStatement",
                      "src": "1746:21:27"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9765,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9580,
                            "src": "1777:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9767,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9766,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9703,
                            "src": "1787:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1777:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9768,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9705,
                          "src": "1795:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1777:21:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9770,
                      "nodeType": "ExpressionStatement",
                      "src": "1777:21:27"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9772,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9701,
                            "src": "1823:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9773,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9703,
                            "src": "1828:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9774,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9705,
                            "src": "1833:3:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9771,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9564,
                          "src": "1814:8:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1814:23:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9776,
                      "nodeType": "EmitStatement",
                      "src": "1809:28:27"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1855:4:27",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9709,
                      "id": 9778,
                      "nodeType": "Return",
                      "src": "1848:11:27"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 9780,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9706,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9701,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9780,
                      "src": "1389:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9700,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1389:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9703,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9780,
                      "src": "1410:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9702,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1410:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9705,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9780,
                      "src": "1431:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9704,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1431:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1379:69:27"
                },
                "returnParameters": {
                  "id": 9709,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9708,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9780,
                      "src": "1465:4:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9707,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1465:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1464:6:27"
                },
                "scope": 9781,
                "src": "1358:508:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9782,
            "src": "58:1810:27"
          }
        ],
        "src": "33:1836:27"
      }
    },
    "elephantdexcore/contracts/UniswapV2ERC20.sol": {
      "id": 28,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/UniswapV2ERC20.sol",
        "exportedSymbols": {
          "UniswapV2ERC20": [
            10170
          ]
        },
        "id": 10171,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9783,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:28"
          },
          {
            "absolutePath": "elephantdexcore/contracts/libraries/SafeMath.sol",
            "file": "./libraries/SafeMath.sol",
            "id": 9784,
            "nodeType": "ImportDirective",
            "scope": 10171,
            "sourceUnit": 12129,
            "src": "63:34:28",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 10170,
            "linearizedBaseContracts": [
              10170
            ],
            "name": "UniswapV2ERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 9787,
                "libraryName": {
                  "contractScope": null,
                  "id": 9785,
                  "name": "SafeMathUniswap",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12128,
                  "src": "135:15:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMathUniswap_$12128",
                    "typeString": "library SafeMathUniswap"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "129:31:28",
                "typeName": {
                  "id": 9786,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "155:4:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": true,
                "functionSelector": "06fdde03",
                "id": 9790,
                "mutability": "constant",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "166:49:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9788,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "166:6:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "456c657068616e74204c5020546f6b656e",
                  "id": 9789,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "196:19:28",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_94b79270310aff7a2b23e7c4fae2666aa30e675fd17c1e902e95e035a6710c23",
                    "typeString": "literal_string \"Elephant LP Token\""
                  },
                  "value": "Elephant LP Token"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "95d89b41",
                "id": 9793,
                "mutability": "constant",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "221:45:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9791,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "221:6:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "454c455048414e542d4c50",
                  "id": 9792,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "253:13:28",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_bed839fb450c04913490cb1524942640726582c44ccd0c6d442b81d04305a3de",
                    "typeString": "literal_string \"ELEPHANT-LP\""
                  },
                  "value": "ELEPHANT-LP"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "313ce567",
                "id": 9796,
                "mutability": "constant",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "272:35:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 9794,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "272:5:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 9795,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "305:2:28",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "18160ddd",
                "id": 9798,
                "mutability": "mutable",
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "313:24:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 9797,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "313:4:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 9802,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "343:41:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 9801,
                  "keyType": {
                    "id": 9799,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "343:24:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 9800,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 9808,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "390:61:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 9807,
                  "keyType": {
                    "id": 9803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "398:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "390:44:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 9806,
                    "keyType": {
                      "id": 9804,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "417:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "409:24:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 9805,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "428:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "3644e515",
                "id": 9810,
                "mutability": "mutable",
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "458:31:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9809,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "458:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "30adf81f",
                "id": 9813,
                "mutability": "constant",
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "599:108:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9811,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "599:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                  "id": 9812,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "641:66:28",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                    "typeString": "int_const 4995...(69 digits omitted)...3241"
                  },
                  "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "7ecebe00",
                "id": 9817,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 10170,
                "src": "713:38:28",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 9816,
                  "keyType": {
                    "id": 9814,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "721:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "713:24:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 9815,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "732:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9825,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9824,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9819,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9825,
                      "src": "773:21:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9818,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "773:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9821,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9825,
                      "src": "796:23:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9820,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "796:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9823,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9825,
                      "src": "821:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9822,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "821:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "772:60:28"
                },
                "src": "758:75:28"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9833,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9832,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9827,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9833,
                      "src": "853:20:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9826,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "853:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9829,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9833,
                      "src": "875:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9828,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "875:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9831,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9833,
                      "src": "895:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9830,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "895:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "852:54:28"
                },
                "src": "838:69:28"
              },
              {
                "body": {
                  "id": 9868,
                  "nodeType": "Block",
                  "src": "934:425:28",
                  "statements": [
                    {
                      "assignments": [
                        9837
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9837,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9868,
                          "src": "944:12:28",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9836,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "944:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9838,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "944:12:28"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "975:44:28",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "989:20:28",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "1000:7:28"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1000:9:28"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "989:7:28"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 9837,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "989:7:28",
                          "valueSize": 1
                        }
                      ],
                      "id": 9839,
                      "nodeType": "InlineAssembly",
                      "src": "966:53:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9840,
                          "name": "DOMAIN_SEPARATOR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9810,
                          "src": "1028:16:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 9845,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1108:84:28",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 9844,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1098:9:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1098:95:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9850,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9790,
                                          "src": "1227:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 9849,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1221:5:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 9848,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1221:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 9851,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1221:11:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 9847,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1211:9:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1211:22:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 9856,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1267:3:28",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          },
                                          "value": "1"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          }
                                        ],
                                        "id": 9855,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1261:5:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 9854,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1261:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 9857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1261:10:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 9853,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1251:9:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1251:21:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 9859,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9837,
                                  "src": "1290:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9862,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1323:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_UniswapV2ERC20_$10170",
                                        "typeString": "contract UniswapV2ERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_UniswapV2ERC20_$10170",
                                        "typeString": "contract UniswapV2ERC20"
                                      }
                                    ],
                                    "id": 9861,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1315:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 9860,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1315:7:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 9863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1315:13:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9842,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1070:3:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 9843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1070:10:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 9864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1070:272:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9841,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1047:9:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1047:305:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1028:324:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 9867,
                      "nodeType": "ExpressionStatement",
                      "src": "1028:324:28"
                    }
                  ]
                },
                "documentation": null,
                "id": 9869,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9834,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "924:2:28"
                },
                "returnParameters": {
                  "id": 9835,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "934:0:28"
                },
                "scope": 10170,
                "src": "913:446:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9903,
                  "nodeType": "Block",
                  "src": "1413:149:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9876,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9798,
                          "src": "1423:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9879,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9873,
                              "src": "1453:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9877,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9798,
                              "src": "1437:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12077,
                            "src": "1437:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1437:22:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1423:36:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9882,
                      "nodeType": "ExpressionStatement",
                      "src": "1423:36:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9883,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9802,
                            "src": "1469:9:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9885,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9884,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9871,
                            "src": "1479:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1469:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9890,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9873,
                              "src": "1503:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9886,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9802,
                                "src": "1485:9:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9888,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9887,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9871,
                                "src": "1495:2:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1485:13:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12077,
                            "src": "1485:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1485:24:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1469:40:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9893,
                      "nodeType": "ExpressionStatement",
                      "src": "1469:40:28"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1541:1:28",
                                "subdenomination": null,
                                "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": 9896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1533:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9895,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1533:7:28",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1533:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9899,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9871,
                            "src": "1545:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9900,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9873,
                            "src": "1549:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9894,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9833,
                          "src": "1524:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1524:31:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9902,
                      "nodeType": "EmitStatement",
                      "src": "1519:36:28"
                    }
                  ]
                },
                "documentation": null,
                "id": 9904,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9874,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9871,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9904,
                      "src": "1380:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9870,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1380:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9873,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9904,
                      "src": "1392:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9872,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1392:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1379:24:28"
                },
                "returnParameters": {
                  "id": 9875,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1413:0:28"
                },
                "scope": 10170,
                "src": "1365:197:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9938,
                  "nodeType": "Block",
                  "src": "1618:155:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9911,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9802,
                            "src": "1628:9:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9913,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9912,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9906,
                            "src": "1638:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1628:15:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9918,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9908,
                              "src": "1666:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9914,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9802,
                                "src": "1646:9:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9916,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9915,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9906,
                                "src": "1656:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1646:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9917,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12099,
                            "src": "1646:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1646:26:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1628:44:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9921,
                      "nodeType": "ExpressionStatement",
                      "src": "1628:44:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9922,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9798,
                          "src": "1682:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9925,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9908,
                              "src": "1712:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9923,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9798,
                              "src": "1696:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12099,
                            "src": "1696:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1696:22:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1682:36:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9928,
                      "nodeType": "ExpressionStatement",
                      "src": "1682:36:28"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9930,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9906,
                            "src": "1742:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1756:1:28",
                                "subdenomination": null,
                                "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": 9932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1748:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9931,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1748:7:28",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1748:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9935,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9908,
                            "src": "1760:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9929,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9833,
                          "src": "1733:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1733:33:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9937,
                      "nodeType": "EmitStatement",
                      "src": "1728:38:28"
                    }
                  ]
                },
                "documentation": null,
                "id": 9939,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9909,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9906,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9939,
                      "src": "1583:12:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9905,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1583:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9908,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9939,
                      "src": "1597:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9907,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1597:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1582:26:28"
                },
                "returnParameters": {
                  "id": 9910,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1618:0:28"
                },
                "scope": 10170,
                "src": "1568:205:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9962,
                  "nodeType": "Block",
                  "src": "1849:96:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9948,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9808,
                              "src": "1859:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 9951,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9949,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9941,
                              "src": "1869:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1859:16:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9952,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9950,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9943,
                            "src": "1876:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1859:25:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9953,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9945,
                          "src": "1887:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1859:33:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9955,
                      "nodeType": "ExpressionStatement",
                      "src": "1859:33:28"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9957,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9941,
                            "src": "1916:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9958,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9943,
                            "src": "1923:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9959,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9945,
                            "src": "1932:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9956,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9825,
                          "src": "1907:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1907:31:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9961,
                      "nodeType": "EmitStatement",
                      "src": "1902:36:28"
                    }
                  ]
                },
                "documentation": null,
                "id": 9963,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9946,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9941,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9963,
                      "src": "1797:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1797:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9943,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9963,
                      "src": "1812:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9942,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1812:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9945,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9963,
                      "src": "1829:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9944,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1829:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1796:44:28"
                },
                "returnParameters": {
                  "id": 9947,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1849:0:28"
                },
                "scope": 10170,
                "src": "1779:166:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 10000,
                  "nodeType": "Block",
                  "src": "2016:151:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9972,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9802,
                            "src": "2026:9:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9974,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9973,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9965,
                            "src": "2036:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2026:15:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9979,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9969,
                              "src": "2064:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9975,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9802,
                                "src": "2044:9:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9977,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9976,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9965,
                                "src": "2054:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2044:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12099,
                            "src": "2044:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2044:26:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2026:44:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9982,
                      "nodeType": "ExpressionStatement",
                      "src": "2026:44:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9983,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9802,
                            "src": "2080:9:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9985,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9984,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9967,
                            "src": "2090:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2080:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9990,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9969,
                              "src": "2114:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9986,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9802,
                                "src": "2096:9:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9988,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9987,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9967,
                                "src": "2106:2:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2096:13:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12077,
                            "src": "2096:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2096:24:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2080:40:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9993,
                      "nodeType": "ExpressionStatement",
                      "src": "2080:40:28"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9995,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9965,
                            "src": "2144:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9996,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9967,
                            "src": "2150:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9997,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9969,
                            "src": "2154:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9994,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9833,
                          "src": "2135:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2135:25:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9999,
                      "nodeType": "EmitStatement",
                      "src": "2130:30:28"
                    }
                  ]
                },
                "documentation": null,
                "id": 10001,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9970,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9965,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10001,
                      "src": "1970:12:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9964,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1970:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9967,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10001,
                      "src": "1984:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9966,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1984:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9969,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10001,
                      "src": "1996:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9968,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1996:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1969:38:28"
                },
                "returnParameters": {
                  "id": 9971,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2016:0:28"
                },
                "scope": 10170,
                "src": "1951:216:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 10019,
                  "nodeType": "Block",
                  "src": "2243:74:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10011,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2262:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2262:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10013,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10003,
                            "src": "2274:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10014,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10005,
                            "src": "2283:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10010,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9963,
                          "src": "2253:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 10015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2253:36:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10016,
                      "nodeType": "ExpressionStatement",
                      "src": "2253:36:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 10017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2306:4:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 10009,
                      "id": 10018,
                      "nodeType": "Return",
                      "src": "2299:11:28"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 10020,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10006,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10003,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10020,
                      "src": "2190:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10002,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2190:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10005,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10020,
                      "src": "2207:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10004,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2207:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2189:29:28"
                },
                "returnParameters": {
                  "id": 10009,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10008,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10020,
                      "src": "2237:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10007,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2237:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2236:6:28"
                },
                "scope": 10170,
                "src": "2173:144:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 10038,
                  "nodeType": "Block",
                  "src": "2389:70:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10030,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2409:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2409:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10032,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10022,
                            "src": "2421:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10033,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10024,
                            "src": "2425:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10029,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10001,
                          "src": "2399:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 10034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2399:32:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10035,
                      "nodeType": "ExpressionStatement",
                      "src": "2399:32:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 10036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2448:4:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 10028,
                      "id": 10037,
                      "nodeType": "Return",
                      "src": "2441:11:28"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 10039,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10025,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10022,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10039,
                      "src": "2341:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10021,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2341:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10024,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10039,
                      "src": "2353:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10023,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2353:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2340:24:28"
                },
                "returnParameters": {
                  "id": 10028,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10027,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10039,
                      "src": "2383:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10026,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2383:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2382:6:28"
                },
                "scope": 10170,
                "src": "2323:136:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 10089,
                  "nodeType": "Block",
                  "src": "2549:211:28",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10050,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9808,
                              "src": "2563:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 10052,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10051,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10041,
                              "src": "2573:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2563:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 10055,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10053,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2579:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2579:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2563:27:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2599:2:28",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 10058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2600:1:28",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 10057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2594:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 10056,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2594:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 10060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2594:8:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2563:39:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 10080,
                      "nodeType": "IfStatement",
                      "src": "2559:138:28",
                      "trueBody": {
                        "id": 10079,
                        "nodeType": "Block",
                        "src": "2604:93:28",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 10077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10062,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9808,
                                    "src": "2618:9:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 10066,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10063,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10041,
                                    "src": "2628:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2618:15:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 10067,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10064,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2634:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 10065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2634:10:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2618:27:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10075,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10045,
                                    "src": "2680:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10068,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9808,
                                        "src": "2648:9:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 10070,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10069,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10041,
                                        "src": "2658:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2648:15:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 10073,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10071,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2664:3:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10072,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2664:10:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2648:27:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 10074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12099,
                                  "src": "2648:31:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2648:38:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2618:68:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10078,
                            "nodeType": "ExpressionStatement",
                            "src": "2618:68:28"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10082,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10041,
                            "src": "2716:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10083,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10043,
                            "src": "2722:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10084,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10045,
                            "src": "2726:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10081,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10001,
                          "src": "2706:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 10085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2706:26:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10086,
                      "nodeType": "ExpressionStatement",
                      "src": "2706:26:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 10087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2749:4:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 10049,
                      "id": 10088,
                      "nodeType": "Return",
                      "src": "2742:11:28"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 10090,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10046,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10041,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10090,
                      "src": "2487:12:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10040,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2487:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10043,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10090,
                      "src": "2501:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10042,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2501:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10045,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10090,
                      "src": "2513:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10044,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2513:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2486:38:28"
                },
                "returnParameters": {
                  "id": 10049,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10048,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10090,
                      "src": "2543:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10047,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2543:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2542:6:28"
                },
                "scope": 10170,
                "src": "2465:295:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 10168,
                  "nodeType": "Block",
                  "src": "2881:547:28",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10108,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10098,
                              "src": "2899:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10109,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "2911:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 10110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2911:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2899:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a2045585049524544",
                            "id": 10112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2928:20:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87",
                              "typeString": "literal_string \"UniswapV2: EXPIRED\""
                            },
                            "value": "UniswapV2: EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87",
                              "typeString": "literal_string \"UniswapV2: EXPIRED\""
                            }
                          ],
                          "id": 10107,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2891:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2891:58:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10114,
                      "nodeType": "ExpressionStatement",
                      "src": "2891:58:28"
                    },
                    {
                      "assignments": [
                        10116
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10116,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10168,
                          "src": "2959:14:28",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 10115,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2959:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10138,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 10120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3033:10:28",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 10121,
                                "name": "DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9810,
                                "src": "3061:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10125,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9813,
                                        "src": "3116:15:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 10126,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10092,
                                        "src": "3133:5:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 10127,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10094,
                                        "src": "3140:7:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 10128,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10096,
                                        "src": "3149:5:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 10132,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "3156:15:28",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 10129,
                                            "name": "nonces",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9817,
                                            "src": "3156:6:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 10131,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 10130,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10092,
                                            "src": "3163:5:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3156:13:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 10133,
                                        "name": "deadline",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10098,
                                        "src": "3173:8:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10123,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3105:3:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 10124,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3105:10:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 10134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3105:77:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 10122,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3095:9:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 10135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3095:88:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10118,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2999:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 10119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2999:16:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 10136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2999:198:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 10117,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "2976:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 10137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2976:231:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2959:248:28"
                    },
                    {
                      "assignments": [
                        10140
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10140,
                          "mutability": "mutable",
                          "name": "recoveredAddress",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10168,
                          "src": "3217:24:28",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10139,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3217:7:28",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10147,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10142,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10116,
                            "src": "3254:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10143,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10100,
                            "src": "3262:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10144,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "3265:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10145,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10104,
                            "src": "3268:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10141,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "3244:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 10146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3244:26:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3217:53:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 10158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10149,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10140,
                                "src": "3288:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 10152,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3316:1:28",
                                    "subdenomination": null,
                                    "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": 10151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3308:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10150,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3308:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 10153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3308:10:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3288:30:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10155,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10140,
                                "src": "3322:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10156,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10092,
                                "src": "3342:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3322:25:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3288:59:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245",
                            "id": 10159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3349:30:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56",
                              "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\""
                            },
                            "value": "UniswapV2: INVALID_SIGNATURE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56",
                              "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\""
                            }
                          ],
                          "id": 10148,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3280:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3280:100:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10161,
                      "nodeType": "ExpressionStatement",
                      "src": "3280:100:28"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10163,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10092,
                            "src": "3399:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10164,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10094,
                            "src": "3406:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10165,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10096,
                            "src": "3415:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10162,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9963,
                          "src": "3390:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 10166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3390:31:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10167,
                      "nodeType": "ExpressionStatement",
                      "src": "3390:31:28"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 10169,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10105,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10092,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2782:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10091,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2782:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10094,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2797:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10093,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2797:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10096,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2814:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10095,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2814:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10098,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2826:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10097,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2826:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10100,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2841:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 10099,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2841:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10102,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2850:9:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10101,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2850:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10104,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10169,
                      "src": "2861:9:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10103,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2861:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2781:90:28"
                },
                "returnParameters": {
                  "id": 10106,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2881:0:28"
                },
                "scope": 10170,
                "src": "2766:662:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 10171,
            "src": "99:3331:28"
          }
        ],
        "src": "37:3394:28"
      }
    },
    "elephantdexcore/contracts/UniswapV2Factory.sol": {
      "id": 29,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/UniswapV2Factory.sol",
        "exportedSymbols": {
          "UniswapV2Factory": [
            10388
          ]
        },
        "id": 10389,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 10172,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:29"
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
            "file": "./interfaces/IUniswapV2Factory.sol",
            "id": 10173,
            "nodeType": "ImportDirective",
            "scope": 10389,
            "sourceUnit": 11736,
            "src": "63:44:29",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/UniswapV2Pair.sol",
            "file": "./UniswapV2Pair.sol",
            "id": 10174,
            "nodeType": "ImportDirective",
            "scope": 10389,
            "sourceUnit": 11457,
            "src": "108:29:29",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 10175,
                  "name": "IUniswapV2Factory",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11735,
                  "src": "168:17:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                    "typeString": "contract IUniswapV2Factory"
                  }
                },
                "id": 10176,
                "nodeType": "InheritanceSpecifier",
                "src": "168:17:29"
              }
            ],
            "contractDependencies": [
              11456,
              11735
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 10388,
            "linearizedBaseContracts": [
              10388,
              11735
            ],
            "name": "UniswapV2Factory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "baseFunctions": [
                  11689
                ],
                "constant": false,
                "functionSelector": "017e7e58",
                "id": 10179,
                "mutability": "mutable",
                "name": "feeTo",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 10178,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "207:8:29"
                },
                "scope": 10388,
                "src": "192:29:29",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 10177,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "192:7:29",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  11694
                ],
                "constant": false,
                "functionSelector": "094b7415",
                "id": 10182,
                "mutability": "mutable",
                "name": "feeToSetter",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 10181,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "242:8:29"
                },
                "scope": 10388,
                "src": "227:35:29",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 10180,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "227:7:29",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  11703
                ],
                "constant": false,
                "functionSelector": "e6a43905",
                "id": 10189,
                "mutability": "mutable",
                "name": "getPair",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 10188,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "324:8:29"
                },
                "scope": 10388,
                "src": "269:71:29",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                  "typeString": "mapping(address => mapping(address => address))"
                },
                "typeName": {
                  "id": 10187,
                  "keyType": {
                    "id": 10183,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "277:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "269:47:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(address => address))"
                  },
                  "valueType": {
                    "id": 10186,
                    "keyType": {
                      "id": 10184,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "296:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "288:27:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 10185,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "307:7:29",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  11710
                ],
                "constant": false,
                "functionSelector": "1e3dd18b",
                "id": 10193,
                "mutability": "mutable",
                "name": "allPairs",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 10192,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "363:8:29"
                },
                "scope": 10388,
                "src": "346:34:29",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 10190,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "346:7:29",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10191,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "346:9:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 10203,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 10202,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10195,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10203,
                      "src": "405:22:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10194,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "405:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10197,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10203,
                      "src": "429:22:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10196,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "429:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10199,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10203,
                      "src": "453:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10198,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "453:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10201,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10203,
                      "src": "467:4:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10200,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "467:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "404:68:29"
                },
                "src": "387:86:29"
              },
              {
                "body": {
                  "id": 10212,
                  "nodeType": "Block",
                  "src": "520:43:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10210,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10208,
                          "name": "feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10182,
                          "src": "530:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10209,
                          "name": "_feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10205,
                          "src": "544:12:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "530:26:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10211,
                      "nodeType": "ExpressionStatement",
                      "src": "530:26:29"
                    }
                  ]
                },
                "documentation": null,
                "id": 10213,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10206,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10205,
                      "mutability": "mutable",
                      "name": "_feeToSetter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10213,
                      "src": "491:20:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10204,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "491:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "490:22:29"
                },
                "returnParameters": {
                  "id": 10207,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "520:0:29"
                },
                "scope": 10388,
                "src": "479:84:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  11715
                ],
                "body": {
                  "id": 10222,
                  "nodeType": "Block",
                  "src": "633:39:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10219,
                          "name": "allPairs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10193,
                          "src": "650:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 10220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "650:15:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 10218,
                      "id": 10221,
                      "nodeType": "Return",
                      "src": "643:22:29"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "574f2ba3",
                "id": 10223,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 10215,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "604:8:29"
                },
                "parameters": {
                  "id": 10214,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "592:2:29"
                },
                "returnParameters": {
                  "id": 10218,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10217,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10223,
                      "src": "627:4:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10216,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "627:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "626:6:29"
                },
                "scope": 10388,
                "src": "569:103:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 10235,
                  "nodeType": "Block",
                  "src": "734:67:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10230,
                                  "name": "UniswapV2Pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11456,
                                  "src": "766:13:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                                    "typeString": "type(contract UniswapV2Pair)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                                    "typeString": "type(contract UniswapV2Pair)"
                                  }
                                ],
                                "id": 10229,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "761:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 10231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "761:19:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_UniswapV2Pair_$11456",
                                "typeString": "type(contract UniswapV2Pair)"
                              }
                            },
                            "id": 10232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "creationCode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "761:32:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 10228,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "751:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 10233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "751:43:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "functionReturnParameters": 10227,
                      "id": 10234,
                      "nodeType": "Return",
                      "src": "744:50:29"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9aab9248",
                "id": 10236,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pairCodeHash",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10224,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "699:2:29"
                },
                "returnParameters": {
                  "id": 10227,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10226,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10236,
                      "src": "725:7:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10225,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "725:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "724:9:29"
                },
                "scope": 10388,
                "src": "678:123:29",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  11724
                ],
                "body": {
                  "id": 10348,
                  "nodeType": "Block",
                  "src": "900:863:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10247,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10238,
                              "src": "918:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10248,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10240,
                              "src": "928:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "918:16:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a204944454e544943414c5f414444524553534553",
                            "id": 10250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "936:32:29",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70",
                              "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\""
                            },
                            "value": "UniswapV2: IDENTICAL_ADDRESSES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70",
                              "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\""
                            }
                          ],
                          "id": 10246,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "910:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "910:59:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10252,
                      "nodeType": "ExpressionStatement",
                      "src": "910:59:29"
                    },
                    {
                      "assignments": [
                        10254,
                        10256
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10254,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10348,
                          "src": "980:14:29",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10253,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "980:7:29",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 10256,
                          "mutability": "mutable",
                          "name": "token1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10348,
                          "src": "996:14:29",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10255,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "996:7:29",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10267,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10257,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10238,
                            "src": "1014:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10258,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10240,
                            "src": "1023:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1014:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 10263,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10240,
                              "src": "1052:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10264,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10238,
                              "src": "1060:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 10265,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1051:16:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "id": 10266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "1014:53:29",
                        "trueExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 10260,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10238,
                              "src": "1033:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10261,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10240,
                              "src": "1041:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 10262,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1032:16:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "979:88:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10269,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10254,
                              "src": "1085:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1103:1:29",
                                  "subdenomination": null,
                                  "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": 10271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1095:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10270,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1095:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 10273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1095:10:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1085:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a205a45524f5f41444452455353",
                            "id": 10275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1107:25:29",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae",
                              "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\""
                            },
                            "value": "UniswapV2: ZERO_ADDRESS"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae",
                              "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\""
                            }
                          ],
                          "id": 10268,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1077:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1077:56:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10277,
                      "nodeType": "ExpressionStatement",
                      "src": "1077:56:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10279,
                                  "name": "getPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10189,
                                  "src": "1151:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                    "typeString": "mapping(address => mapping(address => address))"
                                  }
                                },
                                "id": 10281,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10280,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10254,
                                  "src": "1159:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1151:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                  "typeString": "mapping(address => address)"
                                }
                              },
                              "id": 10283,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10282,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10256,
                                "src": "1167:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1151:23:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1186:1:29",
                                  "subdenomination": null,
                                  "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": 10285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1178:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10284,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1178:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 10287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1178:10:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1151:37:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20504149525f455849535453",
                            "id": 10289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1190:24:29",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db",
                              "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\""
                            },
                            "value": "UniswapV2: PAIR_EXISTS"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db",
                              "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\""
                            }
                          ],
                          "id": 10278,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1143:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1143:72:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10291,
                      "nodeType": "ExpressionStatement",
                      "src": "1143:72:29"
                    },
                    {
                      "assignments": [
                        10293
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10293,
                          "mutability": "mutable",
                          "name": "bytecode",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10348,
                          "src": "1255:21:29",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 10292,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1255:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10298,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10295,
                              "name": "UniswapV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11456,
                              "src": "1284:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                                "typeString": "type(contract UniswapV2Pair)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                                "typeString": "type(contract UniswapV2Pair)"
                              }
                            ],
                            "id": 10294,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -27,
                            "src": "1279:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1279:19:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_UniswapV2Pair_$11456",
                            "typeString": "type(contract UniswapV2Pair)"
                          }
                        },
                        "id": 10297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "creationCode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1279:32:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1255:56:29"
                    },
                    {
                      "assignments": [
                        10300
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10300,
                          "mutability": "mutable",
                          "name": "salt",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10348,
                          "src": "1321:12:29",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 10299,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1321:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10308,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10304,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10254,
                                "src": "1363:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10305,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10256,
                                "src": "1371:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10302,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1346:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 10303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1346:16:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 10306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1346:32:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 10301,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "1336:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 10307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1336:43:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1321:58:29"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "1398:84:29",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "1412:60:29",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1428:1:29",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "bytecode",
                                      "nodeType": "YulIdentifier",
                                      "src": "1435:8:29"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1445:2:29",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1431:3:29"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1431:17:29"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "bytecode",
                                      "nodeType": "YulIdentifier",
                                      "src": "1456:8:29"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "1450:5:29"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1450:15:29"
                                },
                                {
                                  "name": "salt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1467:4:29"
                                }
                              ],
                              "functionName": {
                                "name": "create2",
                                "nodeType": "YulIdentifier",
                                "src": "1420:7:29"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1420:52:29"
                            },
                            "variableNames": [
                              {
                                "name": "pair",
                                "nodeType": "YulIdentifier",
                                "src": "1412:4:29"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 10293,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1435:8:29",
                          "valueSize": 1
                        },
                        {
                          "declaration": 10293,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1456:8:29",
                          "valueSize": 1
                        },
                        {
                          "declaration": 10244,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1412:4:29",
                          "valueSize": 1
                        },
                        {
                          "declaration": 10300,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1467:4:29",
                          "valueSize": 1
                        }
                      ],
                      "id": 10309,
                      "nodeType": "InlineAssembly",
                      "src": "1389:93:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10314,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10254,
                            "src": "1522:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10315,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10256,
                            "src": "1530:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10311,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10244,
                                "src": "1505:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10310,
                              "name": "UniswapV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11456,
                              "src": "1491:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11456_$",
                                "typeString": "type(contract UniswapV2Pair)"
                              }
                            },
                            "id": 10312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1491:19:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                              "typeString": "contract UniswapV2Pair"
                            }
                          },
                          "id": 10313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10596,
                          "src": "1491:30:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address) external"
                          }
                        },
                        "id": 10316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1491:46:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10317,
                      "nodeType": "ExpressionStatement",
                      "src": "1491:46:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10318,
                              "name": "getPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10189,
                              "src": "1547:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(address => address))"
                              }
                            },
                            "id": 10321,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10319,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10254,
                              "src": "1555:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1547:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 10322,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10320,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10256,
                            "src": "1563:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1547:23:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10323,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10244,
                          "src": "1573:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1547:30:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10325,
                      "nodeType": "ExpressionStatement",
                      "src": "1547:30:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10326,
                              "name": "getPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10189,
                              "src": "1587:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(address => address))"
                              }
                            },
                            "id": 10329,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10327,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10256,
                              "src": "1595:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1587:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 10330,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10328,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10254,
                            "src": "1603:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1587:23:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10331,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10244,
                          "src": "1613:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1587:30:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10333,
                      "nodeType": "ExpressionStatement",
                      "src": "1587:30:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10337,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10244,
                            "src": "1686:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10334,
                            "name": "allPairs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10193,
                            "src": "1672:8:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 10336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "push",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1672:13:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 10338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1672:19:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10339,
                      "nodeType": "ExpressionStatement",
                      "src": "1672:19:29"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10341,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10254,
                            "src": "1718:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10342,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10256,
                            "src": "1726:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10343,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10244,
                            "src": "1734:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10344,
                              "name": "allPairs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10193,
                              "src": "1740:8:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 10345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1740:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10340,
                          "name": "PairCreated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            10203
                          ],
                          "referencedDeclaration": 10203,
                          "src": "1706:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 10346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1706:50:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10347,
                      "nodeType": "EmitStatement",
                      "src": "1701:55:29"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c9c65396",
                "id": 10349,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "createPair",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 10242,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "868:8:29"
                },
                "parameters": {
                  "id": 10241,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10238,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10349,
                      "src": "827:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10237,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "827:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10240,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10349,
                      "src": "843:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10239,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "843:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "826:32:29"
                },
                "returnParameters": {
                  "id": 10245,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10244,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10349,
                      "src": "886:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10243,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "886:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "885:14:29"
                },
                "scope": 10388,
                "src": "807:956:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  11729
                ],
                "body": {
                  "id": 10367,
                  "nodeType": "Block",
                  "src": "1821:99:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10356,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1839:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1839:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10358,
                              "name": "feeToSetter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10182,
                              "src": "1853:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1839:25:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20464f5242494444454e",
                            "id": 10360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1866:22:29",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            },
                            "value": "UniswapV2: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            }
                          ],
                          "id": 10355,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1831:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1831:58:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10362,
                      "nodeType": "ExpressionStatement",
                      "src": "1831:58:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10363,
                          "name": "feeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10179,
                          "src": "1899:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10364,
                          "name": "_feeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10351,
                          "src": "1907:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1899:14:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10366,
                      "nodeType": "ExpressionStatement",
                      "src": "1899:14:29"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f46901ed",
                "id": 10368,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 10353,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1812:8:29"
                },
                "parameters": {
                  "id": 10352,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10351,
                      "mutability": "mutable",
                      "name": "_feeTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10368,
                      "src": "1787:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10350,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1787:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1786:16:29"
                },
                "returnParameters": {
                  "id": 10354,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1821:0:29"
                },
                "scope": 10388,
                "src": "1769:151:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  11734
                ],
                "body": {
                  "id": 10386,
                  "nodeType": "Block",
                  "src": "1990:111:29",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10375,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2008:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2008:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10377,
                              "name": "feeToSetter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10182,
                              "src": "2022:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2008:25:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20464f5242494444454e",
                            "id": 10379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2035:22:29",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            },
                            "value": "UniswapV2: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            }
                          ],
                          "id": 10374,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2000:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2000:58:29",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10381,
                      "nodeType": "ExpressionStatement",
                      "src": "2000:58:29"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10382,
                          "name": "feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10182,
                          "src": "2068:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10383,
                          "name": "_feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10370,
                          "src": "2082:12:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2068:26:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10385,
                      "nodeType": "ExpressionStatement",
                      "src": "2068:26:29"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a2e74af6",
                "id": 10387,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeToSetter",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 10372,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1981:8:29"
                },
                "parameters": {
                  "id": 10371,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10370,
                      "mutability": "mutable",
                      "name": "_feeToSetter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10387,
                      "src": "1950:20:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10369,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1950:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1949:22:29"
                },
                "returnParameters": {
                  "id": 10373,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1990:0:29"
                },
                "scope": 10388,
                "src": "1926:175:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 10389,
            "src": "139:1965:29"
          }
        ],
        "src": "37:2068:29"
      }
    },
    "elephantdexcore/contracts/UniswapV2Pair.sol": {
      "id": 30,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/UniswapV2Pair.sol",
        "exportedSymbols": {
          "UniswapV2Pair": [
            11456
          ]
        },
        "id": 11457,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 10390,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:30"
          },
          {
            "absolutePath": "elephantdexcore/contracts/UniswapV2ERC20.sol",
            "file": "./UniswapV2ERC20.sol",
            "id": 10391,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 10171,
            "src": "63:30:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/libraries/Math.sol",
            "file": "./libraries/Math.sol",
            "id": 10392,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 12054,
            "src": "94:30:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/libraries/UQ112x112.sol",
            "file": "./libraries/UQ112x112.sol",
            "id": 10393,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 12173,
            "src": "125:35:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 10394,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 11541,
            "src": "161:33:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
            "file": "./interfaces/IUniswapV2Factory.sol",
            "id": 10395,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 11736,
            "src": "195:44:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol",
            "file": "./interfaces/IUniswapV2Callee.sol",
            "id": 10396,
            "nodeType": "ImportDirective",
            "scope": 11457,
            "sourceUnit": 11555,
            "src": "240:43:30",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 10397,
                  "name": "UniswapV2ERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 10170,
                  "src": "311:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniswapV2ERC20_$10170",
                    "typeString": "contract UniswapV2ERC20"
                  }
                },
                "id": 10398,
                "nodeType": "InheritanceSpecifier",
                "src": "311:14:30"
              }
            ],
            "contractDependencies": [
              10170
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 11456,
            "linearizedBaseContracts": [
              11456,
              10170
            ],
            "name": "UniswapV2Pair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 10401,
                "libraryName": {
                  "contractScope": null,
                  "id": 10399,
                  "name": "SafeMathUniswap",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12128,
                  "src": "338:15:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMathUniswap_$12128",
                    "typeString": "library SafeMathUniswap"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "332:32:30",
                "typeName": {
                  "id": 10400,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "359:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "id": 10404,
                "libraryName": {
                  "contractScope": null,
                  "id": 10402,
                  "name": "UQ112x112",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12172,
                  "src": "375:9:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UQ112x112_$12172",
                    "typeString": "library UQ112x112"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "369:28:30",
                "typeName": {
                  "id": 10403,
                  "name": "uint224",
                  "nodeType": "ElementaryTypeName",
                  "src": "389:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  }
                }
              },
              {
                "constant": true,
                "functionSelector": "ba9a7a56",
                "id": 10409,
                "mutability": "constant",
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "403:46:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 10405,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "403:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_1000_by_1",
                    "typeString": "int_const 1000"
                  },
                  "id": 10408,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 10406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "444:2:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "**",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 10407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "448:1:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "src": "444:5:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1000_by_1",
                    "typeString": "int_const 1000"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 10420,
                "mutability": "constant",
                "name": "SELECTOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "455:88:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                },
                "typeName": {
                  "id": 10410,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:6:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657228616464726573732c75696e7432353629",
                              "id": 10416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "513:27:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                                "typeString": "literal_string \"transfer(address,uint256)\""
                              },
                              "value": "transfer(address,uint256)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                                "typeString": "literal_string \"transfer(address,uint256)\""
                              }
                            ],
                            "id": 10415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "507:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 10414,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "507:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 10417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "507:34:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 10413,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "497:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 10418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "497:45:30",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    ],
                    "id": 10412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "490:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_bytes4_$",
                      "typeString": "type(bytes4)"
                    },
                    "typeName": {
                      "id": 10411,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "490:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      }
                    }
                  },
                  "id": 10419,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "490:53:30",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "visibility": "private"
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 10422,
                "mutability": "mutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "550:22:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 10421,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "550:7:30",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "0dfe1681",
                "id": 10424,
                "mutability": "mutable",
                "name": "token0",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "578:21:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 10423,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "578:7:30",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d21220a7",
                "id": 10426,
                "mutability": "mutable",
                "name": "token1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "605:21:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 10425,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "605:7:30",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 10428,
                "mutability": "mutable",
                "name": "reserve0",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "633:24:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint112",
                  "typeString": "uint112"
                },
                "typeName": {
                  "id": 10427,
                  "name": "uint112",
                  "nodeType": "ElementaryTypeName",
                  "src": "633:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 10430,
                "mutability": "mutable",
                "name": "reserve1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "729:24:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint112",
                  "typeString": "uint112"
                },
                "typeName": {
                  "id": 10429,
                  "name": "uint112",
                  "nodeType": "ElementaryTypeName",
                  "src": "729:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 10432,
                "mutability": "mutable",
                "name": "blockTimestampLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "825:34:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 10431,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "825:6:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "functionSelector": "5909c0d5",
                "id": 10434,
                "mutability": "mutable",
                "name": "price0CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "922:32:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 10433,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "922:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "5a3d5493",
                "id": 10436,
                "mutability": "mutable",
                "name": "price1CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "960:32:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 10435,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "960:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "7464fc3d",
                "id": 10438,
                "mutability": "mutable",
                "name": "kLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "998:17:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 10437,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "998:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 10441,
                "mutability": "mutable",
                "name": "unlocked",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 11456,
                "src": "1102:25:30",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 10439,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1102:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "31",
                  "id": 10440,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1126:1:30",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  },
                  "value": "1"
                },
                "visibility": "private"
              },
              {
                "body": {
                  "id": 10459,
                  "nodeType": "Block",
                  "src": "1149:115:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10444,
                              "name": "unlocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10441,
                              "src": "1167:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1179:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1167:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a204c4f434b4544",
                            "id": 10447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1182:19:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a",
                              "typeString": "literal_string \"UniswapV2: LOCKED\""
                            },
                            "value": "UniswapV2: LOCKED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a",
                              "typeString": "literal_string \"UniswapV2: LOCKED\""
                            }
                          ],
                          "id": 10443,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1159:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1159:43:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10449,
                      "nodeType": "ExpressionStatement",
                      "src": "1159:43:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10450,
                          "name": "unlocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10441,
                          "src": "1212:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1223:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1212:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10453,
                      "nodeType": "ExpressionStatement",
                      "src": "1212:12:30"
                    },
                    {
                      "id": 10454,
                      "nodeType": "PlaceholderStatement",
                      "src": "1234:1:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10455,
                          "name": "unlocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10441,
                          "src": "1245:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1256:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1245:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10458,
                      "nodeType": "ExpressionStatement",
                      "src": "1245:12:30"
                    }
                  ]
                },
                "documentation": null,
                "id": 10460,
                "name": "lock",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10442,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1146:2:30"
                },
                "src": "1133:131:30",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 10481,
                  "nodeType": "Block",
                  "src": "1380:117:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10469,
                          "name": "_reserve0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10463,
                          "src": "1390:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10470,
                          "name": "reserve0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10428,
                          "src": "1402:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "1390:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 10472,
                      "nodeType": "ExpressionStatement",
                      "src": "1390:20:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10473,
                          "name": "_reserve1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10465,
                          "src": "1420:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10474,
                          "name": "reserve1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10430,
                          "src": "1432:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "1420:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 10476,
                      "nodeType": "ExpressionStatement",
                      "src": "1420:20:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10477,
                          "name": "_blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10467,
                          "src": "1450:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10478,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10432,
                          "src": "1472:18:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "1450:40:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 10480,
                      "nodeType": "ExpressionStatement",
                      "src": "1450:40:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0902f1ac",
                "id": 10482,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10461,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1290:2:30"
                },
                "returnParameters": {
                  "id": 10468,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10463,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10482,
                      "src": "1314:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10462,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1314:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10465,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10482,
                      "src": "1333:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10464,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1333:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10467,
                      "mutability": "mutable",
                      "name": "_blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10482,
                      "src": "1352:26:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10466,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1352:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1313:66:30"
                },
                "scope": 11456,
                "src": "1270:227:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 10524,
                  "nodeType": "Block",
                  "src": "1573:214:30",
                  "statements": [
                    {
                      "assignments": [
                        10492,
                        10494
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10492,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10524,
                          "src": "1584:12:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 10491,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1584:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 10494,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10524,
                          "src": "1598:17:30",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 10493,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1598:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10504,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10499,
                                "name": "SELECTOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10420,
                                "src": "1653:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10500,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10486,
                                "src": "1663:2:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10501,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10488,
                                "src": "1667:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10497,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1630:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 10498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1630:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 10502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1630:43:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10495,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10484,
                            "src": "1619:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1619:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 10503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1619:55:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1583:91:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 10520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10506,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10492,
                              "src": "1692:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 10518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10507,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10494,
                                        "src": "1704:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 10508,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1704:11:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 10509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1719:1:30",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1704:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10513,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10494,
                                        "src": "1735:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10515,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1742:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 10514,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1742:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 10516,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1741:6:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10511,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "1724:3:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 10512,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1724:10:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 10517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1724:24:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1704:44:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 10519,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1703:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1692:57:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a205452414e534645525f4641494c4544",
                            "id": 10521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1751:28:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2",
                              "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\""
                            },
                            "value": "UniswapV2: TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2",
                              "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\""
                            }
                          ],
                          "id": 10505,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1684:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1684:96:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10523,
                      "nodeType": "ExpressionStatement",
                      "src": "1684:96:30"
                    }
                  ]
                },
                "documentation": null,
                "id": 10525,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10489,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10484,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10525,
                      "src": "1526:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10483,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1526:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10486,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10525,
                      "src": "1541:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10485,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1541:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10488,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10525,
                      "src": "1553:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10487,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1553:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1525:39:30"
                },
                "returnParameters": {
                  "id": 10490,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1573:0:30"
                },
                "scope": 11456,
                "src": "1503:284:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 10533,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 10532,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10527,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10533,
                      "src": "1804:22:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10526,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1804:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10529,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10533,
                      "src": "1828:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10528,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1828:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10531,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10533,
                      "src": "1842:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10530,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1842:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1803:52:30"
                },
                "src": "1793:63:30"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 10543,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 10542,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10535,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10543,
                      "src": "1872:22:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10534,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1872:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10537,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10543,
                      "src": "1896:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10536,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1896:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10539,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10543,
                      "src": "1910:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10538,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1910:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10541,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10543,
                      "src": "1924:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10540,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1924:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1871:72:30"
                },
                "src": "1861:83:30"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 10557,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 10556,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10545,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "1969:22:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10544,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1969:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10547,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "2001:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10546,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2001:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10549,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "2025:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10548,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2025:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10551,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "2049:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10550,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2049:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10553,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "2074:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10552,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2074:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10555,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10557,
                      "src": "2099:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10554,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2099:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1959:164:30"
                },
                "src": "1949:175:30"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 10563,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 10562,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10559,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10563,
                      "src": "2140:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10558,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2140:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10561,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10563,
                      "src": "2158:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10560,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2158:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2139:36:30"
                },
                "src": "2129:47:30"
              },
              {
                "body": {
                  "id": 10571,
                  "nodeType": "Block",
                  "src": "2203:37:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10566,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10422,
                          "src": "2213:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10567,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "2223:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 10568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2223:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2213:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10570,
                      "nodeType": "ExpressionStatement",
                      "src": "2213:20:30"
                    }
                  ]
                },
                "documentation": null,
                "id": 10572,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10564,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2193:2:30"
                },
                "returnParameters": {
                  "id": 10565,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2203:0:30"
                },
                "scope": 11456,
                "src": "2182:58:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 10595,
                  "nodeType": "Block",
                  "src": "2365:143:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10580,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2383:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2383:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10582,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10422,
                              "src": "2397:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2383:21:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20464f5242494444454e",
                            "id": 10584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2406:22:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            },
                            "value": "UniswapV2: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                              "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                            }
                          ],
                          "id": 10579,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2375:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2375:54:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10586,
                      "nodeType": "ExpressionStatement",
                      "src": "2375:54:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10587,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10424,
                          "src": "2459:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10588,
                          "name": "_token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10574,
                          "src": "2468:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2459:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10590,
                      "nodeType": "ExpressionStatement",
                      "src": "2459:16:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10591,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10426,
                          "src": "2485:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10592,
                          "name": "_token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10576,
                          "src": "2494:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2485:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 10594,
                      "nodeType": "ExpressionStatement",
                      "src": "2485:16:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "485cc955",
                "id": 10596,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10577,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10574,
                      "mutability": "mutable",
                      "name": "_token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10596,
                      "src": "2322:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10573,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2322:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10576,
                      "mutability": "mutable",
                      "name": "_token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10596,
                      "src": "2339:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10575,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2339:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2321:34:30"
                },
                "returnParameters": {
                  "id": 10578,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2365:0:30"
                },
                "scope": 11456,
                "src": "2302:206:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 10710,
                  "nodeType": "Block",
                  "src": "2683:754:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 10622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10608,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10598,
                                "src": "2701:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10612,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "2721:2:30",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 10611,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2722:1:30",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 10610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2713:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 10609,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2713:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 10613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2713:11:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "2701:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10615,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10600,
                                "src": "2728:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "2748:2:30",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 10618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2749:1:30",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 10617,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2740:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 10616,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2740:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 10620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2740:11:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "2728:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2701:50:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a204f564552464c4f57",
                            "id": 10623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2753:21:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928",
                              "typeString": "literal_string \"UniswapV2: OVERFLOW\""
                            },
                            "value": "UniswapV2: OVERFLOW"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928",
                              "typeString": "literal_string \"UniswapV2: OVERFLOW\""
                            }
                          ],
                          "id": 10607,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2693:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2693:82:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10625,
                      "nodeType": "ExpressionStatement",
                      "src": "2693:82:30"
                    },
                    {
                      "assignments": [
                        10627
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10627,
                          "mutability": "mutable",
                          "name": "blockTimestamp",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10710,
                          "src": "2785:21:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 10626,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2785:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10637,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10630,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "2816:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 10631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2816:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 10634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 10632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2834:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 10633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2837:2:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "2834:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "2816:23:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2809:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 10628,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2809:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 10636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2809:31:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2785:55:30"
                    },
                    {
                      "assignments": [
                        10639
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10639,
                          "mutability": "mutable",
                          "name": "timeElapsed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10710,
                          "src": "2850:18:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 10638,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2850:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10643,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 10642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10640,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10627,
                          "src": "2871:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 10641,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10432,
                          "src": "2888:18:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "2871:35:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2850:56:30"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 10646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10644,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10639,
                              "src": "2943:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2957:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2943:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "id": 10649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10647,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10602,
                              "src": "2962:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2975:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2962:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2943:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "id": 10653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10651,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10604,
                            "src": "2980:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2993:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2980:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2943:51:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 10686,
                      "nodeType": "IfStatement",
                      "src": "2939:332:30",
                      "trueBody": {
                        "id": 10685,
                        "nodeType": "Block",
                        "src": "2996:275:30",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 10668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 10655,
                                "name": "price0CumulativeLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10434,
                                "src": "3070:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10663,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10602,
                                          "src": "3133:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 10660,
                                              "name": "_reserve1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10604,
                                              "src": "3116:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10658,
                                              "name": "UQ112x112",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12172,
                                              "src": "3099:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_UQ112x112_$12172_$",
                                                "typeString": "type(library UQ112x112)"
                                              }
                                            },
                                            "id": 10659,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12152,
                                            "src": "3099:16:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                              "typeString": "function (uint112) pure returns (uint224)"
                                            }
                                          },
                                          "id": 10661,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3099:27:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "id": 10662,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "uqdiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12171,
                                        "src": "3099:33:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                          "typeString": "function (uint224,uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 10664,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3099:44:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 10657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3094:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 10656,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3094:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 10665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3094:50:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10666,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10639,
                                  "src": "3147:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "3094:64:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3070:88:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10669,
                            "nodeType": "ExpressionStatement",
                            "src": "3070:88:30"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 10683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 10670,
                                "name": "price1CumulativeLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10436,
                                "src": "3172:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10678,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10604,
                                          "src": "3235:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 10675,
                                              "name": "_reserve0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10602,
                                              "src": "3218:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10673,
                                              "name": "UQ112x112",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12172,
                                              "src": "3201:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_UQ112x112_$12172_$",
                                                "typeString": "type(library UQ112x112)"
                                              }
                                            },
                                            "id": 10674,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12152,
                                            "src": "3201:16:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                              "typeString": "function (uint112) pure returns (uint224)"
                                            }
                                          },
                                          "id": 10676,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3201:27:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "id": 10677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "uqdiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12171,
                                        "src": "3201:33:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                          "typeString": "function (uint224,uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 10679,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3201:44:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 10672,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3196:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 10671,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3196:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 10680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3196:50:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10681,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10639,
                                  "src": "3249:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "3196:64:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3172:88:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10684,
                            "nodeType": "ExpressionStatement",
                            "src": "3172:88:30"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10687,
                          "name": "reserve0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10428,
                          "src": "3280:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10690,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10598,
                              "src": "3299:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3291:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 10688,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "3291:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 10691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3291:17:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3280:28:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 10693,
                      "nodeType": "ExpressionStatement",
                      "src": "3280:28:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10694,
                          "name": "reserve1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10430,
                          "src": "3318:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10697,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10600,
                              "src": "3337:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3329:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 10695,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "3329:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 10698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3329:17:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3318:28:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 10700,
                      "nodeType": "ExpressionStatement",
                      "src": "3318:28:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10701,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10432,
                          "src": "3356:18:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 10702,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10627,
                          "src": "3377:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "3356:35:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 10704,
                      "nodeType": "ExpressionStatement",
                      "src": "3356:35:30"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10706,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10428,
                            "src": "3411:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10707,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10430,
                            "src": "3421:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 10705,
                          "name": "Sync",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10563,
                          "src": "3406:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint112,uint112)"
                          }
                        },
                        "id": 10708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3406:24:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10709,
                      "nodeType": "EmitStatement",
                      "src": "3401:29:30"
                    }
                  ]
                },
                "documentation": null,
                "id": 10711,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_update",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10605,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10598,
                      "mutability": "mutable",
                      "name": "balance0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10711,
                      "src": "2607:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10597,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2607:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10600,
                      "mutability": "mutable",
                      "name": "balance1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10711,
                      "src": "2622:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2622:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10602,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10711,
                      "src": "2637:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10601,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2637:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10604,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10711,
                      "src": "2656:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10603,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2656:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2606:68:30"
                },
                "returnParameters": {
                  "id": 10606,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2683:0:30"
                },
                "scope": 11456,
                "src": "2590:847:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 10818,
                  "nodeType": "Block",
                  "src": "3609:734:30",
                  "statements": [
                    {
                      "assignments": [
                        10721
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10721,
                          "mutability": "mutable",
                          "name": "feeTo",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10818,
                          "src": "3619:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10720,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3619:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10727,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10723,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10422,
                                "src": "3653:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10722,
                              "name": "IUniswapV2Factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11735,
                              "src": "3635:17:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$11735_$",
                                "typeString": "type(contract IUniswapV2Factory)"
                              }
                            },
                            "id": 10724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3635:26:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Factory_$11735",
                              "typeString": "contract IUniswapV2Factory"
                            }
                          },
                          "id": 10725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeTo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11689,
                          "src": "3635:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 10726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3635:34:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3619:50:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 10735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 10728,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10718,
                          "src": "3679:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10729,
                            "name": "feeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10721,
                            "src": "3687:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3704:1:30",
                                "subdenomination": null,
                                "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": 10731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3696:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 10730,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3696:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 10733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3696:10:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3687:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3679:27:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 10736,
                      "nodeType": "ExpressionStatement",
                      "src": "3679:27:30"
                    },
                    {
                      "assignments": [
                        10738
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10738,
                          "mutability": "mutable",
                          "name": "_kLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10818,
                          "src": "3716:11:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10737,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3716:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10740,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 10739,
                        "name": "kLast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10438,
                        "src": "3730:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3716:19:30"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 10741,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10718,
                        "src": "3764:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10808,
                            "name": "_kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10738,
                            "src": "4290:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4300:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4290:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10816,
                        "nodeType": "IfStatement",
                        "src": "4286:51:30",
                        "trueBody": {
                          "id": 10815,
                          "nodeType": "Block",
                          "src": "4303:34:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10811,
                                  "name": "kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10438,
                                  "src": "4317:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4325:1:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4317:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10814,
                              "nodeType": "ExpressionStatement",
                              "src": "4317:9:30"
                            }
                          ]
                        }
                      },
                      "id": 10817,
                      "nodeType": "IfStatement",
                      "src": "3760:577:30",
                      "trueBody": {
                        "id": 10807,
                        "nodeType": "Block",
                        "src": "3771:509:30",
                        "statements": [
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10742,
                                "name": "_kLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10738,
                                "src": "3789:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3799:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3789:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 10806,
                            "nodeType": "IfStatement",
                            "src": "3785:485:30",
                            "trueBody": {
                              "id": 10805,
                              "nodeType": "Block",
                              "src": "3802:468:30",
                              "statements": [
                                {
                                  "assignments": [
                                    10746
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 10746,
                                      "mutability": "mutable",
                                      "name": "rootK",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 10805,
                                      "src": "3820:10:30",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 10745,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3820:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 10757,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10754,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10715,
                                            "src": "3863:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 10751,
                                                "name": "_reserve0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10713,
                                                "src": "3848:9:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint112",
                                                  "typeString": "uint112"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint112",
                                                  "typeString": "uint112"
                                                }
                                              ],
                                              "id": 10750,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3843:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 10749,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3843:4:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 10752,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3843:15:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 10753,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12127,
                                          "src": "3843:19:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 10755,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3843:30:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10747,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12053,
                                        "src": "3833:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$12053_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 10748,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sqrt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12052,
                                      "src": "3833:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10756,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3833:41:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3820:54:30"
                                },
                                {
                                  "assignments": [
                                    10759
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 10759,
                                      "mutability": "mutable",
                                      "name": "rootKLast",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 10805,
                                      "src": "3892:14:30",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 10758,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3892:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 10764,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10762,
                                        "name": "_kLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10738,
                                        "src": "3919:6:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10760,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12053,
                                        "src": "3909:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$12053_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 10761,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sqrt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12052,
                                      "src": "3909:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3909:17:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3892:34:30"
                                },
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10767,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 10765,
                                      "name": "rootK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10746,
                                      "src": "3948:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 10766,
                                      "name": "rootKLast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10759,
                                      "src": "3956:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3948:17:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 10804,
                                  "nodeType": "IfStatement",
                                  "src": "3944:312:30",
                                  "trueBody": {
                                    "id": 10803,
                                    "nodeType": "Block",
                                    "src": "3967:289:30",
                                    "statements": [
                                      {
                                        "assignments": [
                                          10769
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 10769,
                                            "mutability": "mutable",
                                            "name": "numerator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 10803,
                                            "src": "3989:14:30",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 10768,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3989:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 10777,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 10774,
                                                  "name": "rootKLast",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10759,
                                                  "src": "4032:9:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 10772,
                                                  "name": "rootK",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10746,
                                                  "src": "4022:5:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 10773,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12099,
                                                "src": "4022:9:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 10775,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4022:20:30",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10770,
                                              "name": "totalSupply",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9798,
                                              "src": "4006:11:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 10771,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12127,
                                            "src": "4006:15:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 10776,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4006:37:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "3989:54:30"
                                      },
                                      {
                                        "assignments": [
                                          10779
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 10779,
                                            "mutability": "mutable",
                                            "name": "denominator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 10803,
                                            "src": "4065:16:30",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 10778,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4065:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 10787,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 10785,
                                              "name": "rootKLast",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10759,
                                              "src": "4101:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "hexValue": "32",
                                                  "id": 10782,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4094:1:30",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 10780,
                                                  "name": "rootK",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10746,
                                                  "src": "4084:5:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 10781,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12127,
                                                "src": "4084:9:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 10783,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4084:12:30",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 10784,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12077,
                                            "src": "4084:16:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 10786,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4084:27:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4065:46:30"
                                      },
                                      {
                                        "assignments": [
                                          10789
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 10789,
                                            "mutability": "mutable",
                                            "name": "liquidity",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 10803,
                                            "src": "4133:14:30",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 10788,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4133:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 10793,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10792,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 10790,
                                            "name": "numerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10769,
                                            "src": "4150:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 10791,
                                            "name": "denominator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10779,
                                            "src": "4162:11:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4150:23:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4133:40:30"
                                      },
                                      {
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10796,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 10794,
                                            "name": "liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10789,
                                            "src": "4199:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 10795,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4211:1:30",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "4199:13:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": null,
                                        "id": 10802,
                                        "nodeType": "IfStatement",
                                        "src": "4195:42:30",
                                        "trueBody": {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 10798,
                                                "name": "feeTo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10721,
                                                "src": "4220:5:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 10799,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10789,
                                                "src": "4227:9:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 10797,
                                              "name": "_mint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9904,
                                              "src": "4214:5:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 10800,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4214:23:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 10801,
                                          "nodeType": "ExpressionStatement",
                                          "src": "4214:23:30"
                                        }
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 10819,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mintFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10716,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10713,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10819,
                      "src": "3542:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10712,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "3542:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10715,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10819,
                      "src": "3561:17:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 10714,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "3561:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3541:38:30"
                },
                "returnParameters": {
                  "id": 10719,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10718,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10819,
                      "src": "3597:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10717,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3597:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3596:12:30"
                },
                "scope": 11456,
                "src": "3524:819:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 10967,
                  "nodeType": "Block",
                  "src": "4517:1168:30",
                  "statements": [
                    {
                      "assignments": [
                        10829,
                        10831,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10829,
                          "mutability": "mutable",
                          "name": "_reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4528:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 10828,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "4528:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 10831,
                          "mutability": "mutable",
                          "name": "_reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4547:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 10830,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "4547:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 10834,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 10832,
                          "name": "getReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10482,
                          "src": "4569:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 10833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4569:13:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4527:55:30"
                    },
                    {
                      "assignments": [
                        10836
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10836,
                          "mutability": "mutable",
                          "name": "balance0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4607:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10835,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4607:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10846,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10843,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4663:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              ],
                              "id": 10842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4655:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 10841,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4655:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 10844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4655:13:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10838,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10424,
                                "src": "4637:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10837,
                              "name": "IERC20Uniswap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11540,
                              "src": "4623:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                "typeString": "type(contract IERC20Uniswap)"
                              }
                            },
                            "id": 10839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4623:21:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                              "typeString": "contract IERC20Uniswap"
                            }
                          },
                          "id": 10840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11501,
                          "src": "4623:31:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 10845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4623:46:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4607:62:30"
                    },
                    {
                      "assignments": [
                        10848
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10848,
                          "mutability": "mutable",
                          "name": "balance1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4679:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10847,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4679:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10858,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10855,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4735:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              ],
                              "id": 10854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4727:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 10853,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4727:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 10856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4727:13:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10850,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10426,
                                "src": "4709:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10849,
                              "name": "IERC20Uniswap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11540,
                              "src": "4695:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                "typeString": "type(contract IERC20Uniswap)"
                              }
                            },
                            "id": 10851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4695:21:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                              "typeString": "contract IERC20Uniswap"
                            }
                          },
                          "id": 10852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11501,
                          "src": "4695:31:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 10857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4695:46:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4679:62:30"
                    },
                    {
                      "assignments": [
                        10860
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10860,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4751:12:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10859,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4751:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10865,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10863,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10829,
                            "src": "4779:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10861,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10836,
                            "src": "4766:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12099,
                          "src": "4766:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 10864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4766:23:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4751:38:30"
                    },
                    {
                      "assignments": [
                        10867
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10867,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4799:12:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10866,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4799:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10872,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10870,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10831,
                            "src": "4827:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10868,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10848,
                            "src": "4814:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12099,
                          "src": "4814:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 10871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4814:23:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4799:38:30"
                    },
                    {
                      "assignments": [
                        10874
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10874,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4848:10:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 10873,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "4848:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10879,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10876,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10829,
                            "src": "4870:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10877,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10831,
                            "src": "4881:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 10875,
                          "name": "_mintFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10819,
                          "src": "4861:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                            "typeString": "function (uint112,uint112) returns (bool)"
                          }
                        },
                        "id": 10878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4861:30:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4848:43:30"
                    },
                    {
                      "assignments": [
                        10881
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10881,
                          "mutability": "mutable",
                          "name": "_totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 10967,
                          "src": "4901:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10880,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4901:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10883,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 10882,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9798,
                        "src": "4921:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4901:31:30"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10884,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10881,
                          "src": "5024:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5040:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5024:17:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 10927,
                        "nodeType": "Block",
                        "src": "5244:123:30",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 10925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 10909,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10826,
                                "src": "5258:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10917,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10914,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10881,
                                          "src": "5291:12:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10912,
                                          "name": "amount0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10860,
                                          "src": "5279:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 10913,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12127,
                                        "src": "5279:11:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 10915,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5279:25:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 10916,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10829,
                                      "src": "5307:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "5279:37:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10923,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10920,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10881,
                                          "src": "5330:12:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10918,
                                          "name": "amount1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10867,
                                          "src": "5318:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 10919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12127,
                                        "src": "5318:11:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 10921,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5318:25:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 10922,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10831,
                                      "src": "5346:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "5318:37:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10910,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12053,
                                    "src": "5270:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$12053_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 10911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "min",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11998,
                                  "src": "5270:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5270:86:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5258:98:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10926,
                            "nodeType": "ExpressionStatement",
                            "src": "5258:98:30"
                          }
                        ]
                      },
                      "id": 10928,
                      "nodeType": "IfStatement",
                      "src": "5020:347:30",
                      "trueBody": {
                        "id": 10908,
                        "nodeType": "Block",
                        "src": "5043:195:30",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 10898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 10887,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10826,
                                "src": "5057:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10896,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10409,
                                    "src": "5105:17:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10892,
                                            "name": "amount1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10867,
                                            "src": "5091:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 10890,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10860,
                                            "src": "5079:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 10891,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12127,
                                          "src": "5079:11:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 10893,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5079:20:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10888,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12053,
                                        "src": "5069:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$12053_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 10889,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sqrt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12052,
                                      "src": "5069:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5069:31:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 10895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12099,
                                  "src": "5069:35:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5069:54:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5057:66:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10899,
                            "nodeType": "ExpressionStatement",
                            "src": "5057:66:30"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 10903,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5150:1:30",
                                      "subdenomination": null,
                                      "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": 10902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5142:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 10901,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5142:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 10904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5142:10:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 10905,
                                  "name": "MINIMUM_LIQUIDITY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10409,
                                  "src": "5154:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 10900,
                                "name": "_mint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9904,
                                "src": "5136:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256)"
                                }
                              },
                              "id": 10906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5136:36:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 10907,
                            "nodeType": "ExpressionStatement",
                            "src": "5136:36:30"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 10930,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10826,
                              "src": "5384:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5396:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5384:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544",
                            "id": 10933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5399:42:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\""
                            },
                            "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\""
                            }
                          ],
                          "id": 10929,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5376:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 10934,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5376:66:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10935,
                      "nodeType": "ExpressionStatement",
                      "src": "5376:66:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10937,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10821,
                            "src": "5458:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10938,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10826,
                            "src": "5462:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10936,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9904,
                          "src": "5452:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 10939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5452:20:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10940,
                      "nodeType": "ExpressionStatement",
                      "src": "5452:20:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10942,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10836,
                            "src": "5491:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10943,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10848,
                            "src": "5501:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10944,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10829,
                            "src": "5511:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10945,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10831,
                            "src": "5522:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 10941,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10711,
                          "src": "5483:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 10946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5483:49:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10947,
                      "nodeType": "ExpressionStatement",
                      "src": "5483:49:30"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 10948,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10874,
                        "src": "5546:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 10959,
                      "nodeType": "IfStatement",
                      "src": "5542:47:30",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10949,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10438,
                            "src": "5553:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10955,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "5580:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10952,
                                    "name": "reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10428,
                                    "src": "5566:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  ],
                                  "id": 10951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5561:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10950,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5561:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 10953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5561:14:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12127,
                              "src": "5561:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5561:28:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5553:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10958,
                        "nodeType": "ExpressionStatement",
                        "src": "5553:36:30"
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10961,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5649:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5649:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10963,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10860,
                            "src": "5661:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10964,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10867,
                            "src": "5670:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10960,
                          "name": "Mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10533,
                          "src": "5644:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 10965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5644:34:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 10966,
                      "nodeType": "EmitStatement",
                      "src": "5639:39:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6a627842",
                "id": 10968,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 10824,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 10823,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10460,
                      "src": "4487:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4487:4:30"
                  }
                ],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10822,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10821,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10968,
                      "src": "4466:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10820,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4466:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4465:12:30"
                },
                "returnParameters": {
                  "id": 10827,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10826,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10968,
                      "src": "4501:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10825,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4501:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4500:16:30"
                },
                "scope": 11456,
                "src": "4452:1233:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 11138,
                  "nodeType": "Block",
                  "src": "5871:1395:30",
                  "statements": [
                    {
                      "assignments": [
                        10980,
                        10982,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10980,
                          "mutability": "mutable",
                          "name": "_reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "5882:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 10979,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "5882:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 10982,
                          "mutability": "mutable",
                          "name": "_reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "5901:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 10981,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "5901:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 10985,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 10983,
                          "name": "getReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10482,
                          "src": "5923:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 10984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5923:13:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5881:55:30"
                    },
                    {
                      "assignments": [
                        10987
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10987,
                          "mutability": "mutable",
                          "name": "_token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "5961:15:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10986,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5961:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10989,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 10988,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10424,
                        "src": "5979:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5961:24:30"
                    },
                    {
                      "assignments": [
                        10991
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10991,
                          "mutability": "mutable",
                          "name": "_token1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6041:15:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 10990,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6041:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 10993,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 10992,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10426,
                        "src": "6059:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6041:24:30"
                    },
                    {
                      "assignments": [
                        10995
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 10995,
                          "mutability": "mutable",
                          "name": "balance0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6121:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 10994,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6121:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11005,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11002,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6178:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              ],
                              "id": 11001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6170:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11000,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6170:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 11003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6170:13:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10997,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10987,
                                "src": "6151:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10996,
                              "name": "IERC20Uniswap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11540,
                              "src": "6137:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                "typeString": "type(contract IERC20Uniswap)"
                              }
                            },
                            "id": 10998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6137:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                              "typeString": "contract IERC20Uniswap"
                            }
                          },
                          "id": 10999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11501,
                          "src": "6137:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 11004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6137:47:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6121:63:30"
                    },
                    {
                      "assignments": [
                        11007
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11007,
                          "mutability": "mutable",
                          "name": "balance1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6194:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11006,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6194:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11017,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11014,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6251:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              ],
                              "id": 11013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6243:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11012,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6243:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 11015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6243:13:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11009,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10991,
                                "src": "6224:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 11008,
                              "name": "IERC20Uniswap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11540,
                              "src": "6210:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                "typeString": "type(contract IERC20Uniswap)"
                              }
                            },
                            "id": 11010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6210:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                              "typeString": "contract IERC20Uniswap"
                            }
                          },
                          "id": 11011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11501,
                          "src": "6210:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 11016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6210:47:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6194:63:30"
                    },
                    {
                      "assignments": [
                        11019
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11019,
                          "mutability": "mutable",
                          "name": "liquidity",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6267:14:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11018,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6267:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11026,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11020,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9802,
                          "src": "6284:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 11025,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11023,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "6302:4:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                "typeString": "contract UniswapV2Pair"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                "typeString": "contract UniswapV2Pair"
                              }
                            ],
                            "id": 11022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6294:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 11021,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6294:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 11024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6294:13:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6284:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6267:41:30"
                    },
                    {
                      "assignments": [
                        11028
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11028,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6319:10:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 11027,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "6319:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11033,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11030,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10980,
                            "src": "6341:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11031,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10982,
                            "src": "6352:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 11029,
                          "name": "_mintFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10819,
                          "src": "6332:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                            "typeString": "function (uint112,uint112) returns (bool)"
                          }
                        },
                        "id": 11032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6332:30:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6319:43:30"
                    },
                    {
                      "assignments": [
                        11035
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11035,
                          "mutability": "mutable",
                          "name": "_totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11138,
                          "src": "6372:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11034,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6372:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11037,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 11036,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9798,
                        "src": "6392:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6372:31:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 11045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 11038,
                          "name": "amount0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10975,
                          "src": "6491:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11041,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10995,
                                "src": "6515:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11039,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11019,
                                "src": "6501:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12127,
                              "src": "6501:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6501:23:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11043,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11035,
                            "src": "6527:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6501:38:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6491:48:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11046,
                      "nodeType": "ExpressionStatement",
                      "src": "6491:48:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 11054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 11047,
                          "name": "amount1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10977,
                          "src": "6597:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11050,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11007,
                                "src": "6621:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11048,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11019,
                                "src": "6607:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12127,
                              "src": "6607:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6607:23:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11052,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11035,
                            "src": "6633:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6607:38:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6597:48:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11055,
                      "nodeType": "ExpressionStatement",
                      "src": "6597:48:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 11063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11057,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10975,
                                "src": "6711:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6721:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6711:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11060,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10977,
                                "src": "6726:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6736:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6726:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6711:26:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544",
                            "id": 11064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6739:42:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\""
                            },
                            "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\""
                            }
                          ],
                          "id": 11056,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6703:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 11065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6703:79:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11066,
                      "nodeType": "ExpressionStatement",
                      "src": "6703:79:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11070,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6806:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                  "typeString": "contract UniswapV2Pair"
                                }
                              ],
                              "id": 11069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6798:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11068,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6798:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 11071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6798:13:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11072,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11019,
                            "src": "6813:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 11067,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9939,
                          "src": "6792:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 11073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6792:31:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11074,
                      "nodeType": "ExpressionStatement",
                      "src": "6792:31:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11076,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10987,
                            "src": "6847:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11077,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10970,
                            "src": "6856:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11078,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10975,
                            "src": "6860:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 11075,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10525,
                          "src": "6833:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 11079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6833:35:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11080,
                      "nodeType": "ExpressionStatement",
                      "src": "6833:35:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11082,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10991,
                            "src": "6892:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11083,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10970,
                            "src": "6901:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11084,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10977,
                            "src": "6905:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 11081,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10525,
                          "src": "6878:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 11085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6878:35:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11086,
                      "nodeType": "ExpressionStatement",
                      "src": "6878:35:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 11097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 11087,
                          "name": "balance0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10995,
                          "src": "6923:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11094,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6975:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                    "typeString": "contract UniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                    "typeString": "contract UniswapV2Pair"
                                  }
                                ],
                                "id": 11093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6967:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11092,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6967:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6967:13:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11089,
                                  "name": "_token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10987,
                                  "src": "6948:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11088,
                                "name": "IERC20Uniswap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11540,
                                "src": "6934:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                  "typeString": "type(contract IERC20Uniswap)"
                                }
                              },
                              "id": 11090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6934:22:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                "typeString": "contract IERC20Uniswap"
                              }
                            },
                            "id": 11091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11501,
                            "src": "6934:32:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 11096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6934:47:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6923:58:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11098,
                      "nodeType": "ExpressionStatement",
                      "src": "6923:58:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 11109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 11099,
                          "name": "balance1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11007,
                          "src": "6991:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11106,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7043:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                    "typeString": "contract UniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                    "typeString": "contract UniswapV2Pair"
                                  }
                                ],
                                "id": 11105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7035:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11104,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7035:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7035:13:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11101,
                                  "name": "_token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10991,
                                  "src": "7016:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11100,
                                "name": "IERC20Uniswap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11540,
                                "src": "7002:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                  "typeString": "type(contract IERC20Uniswap)"
                                }
                              },
                              "id": 11102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7002:22:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                "typeString": "contract IERC20Uniswap"
                              }
                            },
                            "id": 11103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11501,
                            "src": "7002:32:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 11108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7002:47:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6991:58:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11110,
                      "nodeType": "ExpressionStatement",
                      "src": "6991:58:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11112,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10995,
                            "src": "7068:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11113,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11007,
                            "src": "7078:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11114,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10980,
                            "src": "7088:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11115,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10982,
                            "src": "7099:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 11111,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10711,
                          "src": "7060:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 11116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7060:49:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11117,
                      "nodeType": "ExpressionStatement",
                      "src": "7060:49:30"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 11118,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11028,
                        "src": "7123:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 11129,
                      "nodeType": "IfStatement",
                      "src": "7119:47:30",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11119,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10438,
                            "src": "7130:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11125,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "7157:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11122,
                                    "name": "reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10428,
                                    "src": "7143:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  ],
                                  "id": 11121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7138:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11120,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7138:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 11123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7138:14:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12127,
                              "src": "7138:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7138:28:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7130:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11128,
                        "nodeType": "ExpressionStatement",
                        "src": "7130:36:30"
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11131,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "7226:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7226:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11133,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10975,
                            "src": "7238:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11134,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10977,
                            "src": "7247:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11135,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10970,
                            "src": "7256:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11130,
                          "name": "Burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10543,
                          "src": "7221:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256,uint256,address)"
                          }
                        },
                        "id": 11136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7221:38:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11137,
                      "nodeType": "EmitStatement",
                      "src": "7216:43:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "89afcb44",
                "id": 11139,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 10973,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 10972,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10460,
                      "src": "5829:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "5829:4:30"
                  }
                ],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 10971,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10970,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11139,
                      "src": "5808:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10969,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5808:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5807:12:30"
                },
                "returnParameters": {
                  "id": 10978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 10975,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11139,
                      "src": "5843:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10974,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5843:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10977,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11139,
                      "src": "5857:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10976,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5857:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5842:28:30"
                },
                "scope": 11456,
                "src": "5794:1472:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 11375,
                  "nodeType": "Block",
                  "src": "7470:1780:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 11159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11153,
                                "name": "amount0Out",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11141,
                                "src": "7488:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7501:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7488:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11156,
                                "name": "amount1Out",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11143,
                                "src": "7506:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7519:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7506:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7488:32:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 11160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7522:39:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 11152,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7480:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 11161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7480:82:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11162,
                      "nodeType": "ExpressionStatement",
                      "src": "7480:82:30"
                    },
                    {
                      "assignments": [
                        11164,
                        11166,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11164,
                          "mutability": "mutable",
                          "name": "_reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "7573:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 11163,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "7573:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 11166,
                          "mutability": "mutable",
                          "name": "_reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "7592:17:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 11165,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "7592:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 11169,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11167,
                          "name": "getReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10482,
                          "src": "7614:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 11168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7614:13:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7572:55:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 11177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11171,
                                "name": "amount0Out",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11141,
                                "src": "7660:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 11172,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11164,
                                "src": "7673:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "7660:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11174,
                                "name": "amount1Out",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11143,
                                "src": "7686:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 11175,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11166,
                                "src": "7699:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "7686:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7660:48:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e53554646494349454e545f4c4951554944495459",
                            "id": 11178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7710:35:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "UniswapV2: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 11170,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7652:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 11179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7652:94:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11180,
                      "nodeType": "ExpressionStatement",
                      "src": "7652:94:30"
                    },
                    {
                      "assignments": [
                        11182
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11182,
                          "mutability": "mutable",
                          "name": "balance0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "7757:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11181,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "7757:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11183,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7757:13:30"
                    },
                    {
                      "assignments": [
                        11185
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11185,
                          "mutability": "mutable",
                          "name": "balance1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "7780:13:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11184,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "7780:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11186,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7780:13:30"
                    },
                    {
                      "id": 11266,
                      "nodeType": "Block",
                      "src": "7803:655:30",
                      "statements": [
                        {
                          "assignments": [
                            11188
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11188,
                              "mutability": "mutable",
                              "name": "_token0",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11266,
                              "src": "7868:15:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 11187,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7868:7:30",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11190,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 11189,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10424,
                            "src": "7886:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7868:24:30"
                        },
                        {
                          "assignments": [
                            11192
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11192,
                              "mutability": "mutable",
                              "name": "_token1",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11266,
                              "src": "7902:15:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 11191,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7902:7:30",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11194,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 11193,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10426,
                            "src": "7920:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7902:24:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 11202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 11198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11196,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11145,
                                    "src": "7944:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 11197,
                                    "name": "_token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11188,
                                    "src": "7950:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "7944:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 11201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11199,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11145,
                                    "src": "7961:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 11200,
                                    "name": "_token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11192,
                                    "src": "7967:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "7961:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7944:30:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "556e697377617056323a20494e56414c49445f544f",
                                "id": 11203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7976:23:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3",
                                  "typeString": "literal_string \"UniswapV2: INVALID_TO\""
                                },
                                "value": "UniswapV2: INVALID_TO"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3",
                                  "typeString": "literal_string \"UniswapV2: INVALID_TO\""
                                }
                              ],
                              "id": 11195,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "7936:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 11204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7936:64:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 11205,
                          "nodeType": "ExpressionStatement",
                          "src": "7936:64:30"
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11206,
                              "name": "amount0Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11141,
                              "src": "8014:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8027:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8014:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 11215,
                          "nodeType": "IfStatement",
                          "src": "8010:58:30",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11210,
                                  "name": "_token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11188,
                                  "src": "8044:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11211,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11145,
                                  "src": "8053:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11212,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11141,
                                  "src": "8057:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11209,
                                "name": "_safeTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10525,
                                "src": "8030:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 11213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8030:38:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 11214,
                            "nodeType": "ExpressionStatement",
                            "src": "8030:38:30"
                          }
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11216,
                              "name": "amount1Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11143,
                              "src": "8116:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8129:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8116:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 11225,
                          "nodeType": "IfStatement",
                          "src": "8112:58:30",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11220,
                                  "name": "_token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11192,
                                  "src": "8146:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11221,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11145,
                                  "src": "8155:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11222,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11143,
                                  "src": "8159:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11219,
                                "name": "_safeTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10525,
                                "src": "8132:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 11223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8132:38:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 11224,
                            "nodeType": "ExpressionStatement",
                            "src": "8132:38:30"
                          }
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11226,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11147,
                                "src": "8218:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 11227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8218:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8232:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8218:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 11241,
                          "nodeType": "IfStatement",
                          "src": "8214:97:30",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11234,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "8270:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 11235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8270:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11236,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11141,
                                  "src": "8282:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11237,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11143,
                                  "src": "8294:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11238,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11147,
                                  "src": "8306:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11231,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11145,
                                      "src": "8252:2:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11230,
                                    "name": "IUniswapV2Callee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11554,
                                    "src": "8235:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IUniswapV2Callee_$11554_$",
                                      "typeString": "type(contract IUniswapV2Callee)"
                                    }
                                  },
                                  "id": 11232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8235:20:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Callee_$11554",
                                    "typeString": "contract IUniswapV2Callee"
                                  }
                                },
                                "id": 11233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "uniswapV2Call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11553,
                                "src": "8235:34:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (address,uint256,uint256,bytes memory) external"
                                }
                              },
                              "id": 11239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8235:76:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 11240,
                            "nodeType": "ExpressionStatement",
                            "src": "8235:76:30"
                          }
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 11252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 11242,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11182,
                              "src": "8321:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11249,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "8373:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                        "typeString": "contract UniswapV2Pair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                        "typeString": "contract UniswapV2Pair"
                                      }
                                    ],
                                    "id": 11248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8365:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11247,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8365:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 11250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8365:13:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11244,
                                      "name": "_token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11188,
                                      "src": "8346:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11243,
                                    "name": "IERC20Uniswap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11540,
                                    "src": "8332:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                      "typeString": "type(contract IERC20Uniswap)"
                                    }
                                  },
                                  "id": 11245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8332:22:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                    "typeString": "contract IERC20Uniswap"
                                  }
                                },
                                "id": 11246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11501,
                                "src": "8332:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 11251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8332:47:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8321:58:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11253,
                          "nodeType": "ExpressionStatement",
                          "src": "8321:58:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 11264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 11254,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11185,
                              "src": "8389:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11261,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "8441:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                        "typeString": "contract UniswapV2Pair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                        "typeString": "contract UniswapV2Pair"
                                      }
                                    ],
                                    "id": 11260,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8433:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11259,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8433:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 11262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8433:13:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11256,
                                      "name": "_token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11192,
                                      "src": "8414:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11255,
                                    "name": "IERC20Uniswap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11540,
                                    "src": "8400:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                      "typeString": "type(contract IERC20Uniswap)"
                                    }
                                  },
                                  "id": 11257,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8400:22:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                    "typeString": "contract IERC20Uniswap"
                                  }
                                },
                                "id": 11258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11501,
                                "src": "8400:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 11263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8400:47:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8389:58:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11265,
                          "nodeType": "ExpressionStatement",
                          "src": "8389:58:30"
                        }
                      ]
                    },
                    {
                      "assignments": [
                        11268
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11268,
                          "mutability": "mutable",
                          "name": "amount0In",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "8467:14:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11267,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8467:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11282,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11269,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11182,
                            "src": "8484:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11270,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11164,
                              "src": "8495:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11271,
                              "name": "amount0Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11141,
                              "src": "8507:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8495:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8484:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8558:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 11281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8484:75:30",
                        "trueExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11274,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11182,
                            "src": "8520:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11275,
                                  "name": "_reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11164,
                                  "src": "8532:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11276,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11141,
                                  "src": "8544:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8532:22:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11278,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8531:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8520:35:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8467:92:30"
                    },
                    {
                      "assignments": [
                        11284
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11284,
                          "mutability": "mutable",
                          "name": "amount1In",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11375,
                          "src": "8569:14:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11283,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8569:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11298,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11285,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11185,
                            "src": "8586:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11286,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11166,
                              "src": "8597:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11287,
                              "name": "amount1Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11143,
                              "src": "8609:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8597:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8586:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8660:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 11297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8586:75:30",
                        "trueExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11290,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11185,
                            "src": "8622:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11291,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11166,
                                  "src": "8634:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11292,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11143,
                                  "src": "8646:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8634:22:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11294,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8633:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8622:35:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8569:92:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 11306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11300,
                                "name": "amount0In",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11268,
                                "src": "8679:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8691:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8679:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11303,
                                "name": "amount1In",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11284,
                                "src": "8696:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8708:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8696:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "8679:30:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54",
                            "id": 11307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8711:38:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\""
                            },
                            "value": "UniswapV2: INSUFFICIENT_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67",
                              "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 11299,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8671:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 11308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8671:79:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11309,
                      "nodeType": "ExpressionStatement",
                      "src": "8671:79:30"
                    },
                    {
                      "id": 11357,
                      "nodeType": "Block",
                      "src": "8760:343:30",
                      "statements": [
                        {
                          "assignments": [
                            11311
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11311,
                              "mutability": "mutable",
                              "name": "balance0Adjusted",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11357,
                              "src": "8834:21:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11310,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "8834:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11322,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "33",
                                    "id": 11319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8895:1:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11317,
                                    "name": "amount0In",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11268,
                                    "src": "8881:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12127,
                                  "src": "8881:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 11320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8881:16:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 11314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8871:4:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11312,
                                    "name": "balance0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11182,
                                    "src": "8858:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12127,
                                  "src": "8858:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 11315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8858:18:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12099,
                              "src": "8858:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8858:40:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8834:64:30"
                        },
                        {
                          "assignments": [
                            11324
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11324,
                              "mutability": "mutable",
                              "name": "balance1Adjusted",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11357,
                              "src": "8908:21:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11323,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "8908:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11335,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "33",
                                    "id": 11332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8969:1:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11330,
                                    "name": "amount1In",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11284,
                                    "src": "8955:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12127,
                                  "src": "8955:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 11333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8955:16:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 11327,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8945:4:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11325,
                                    "name": "balance1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11185,
                                    "src": "8932:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12127,
                                  "src": "8932:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 11328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8932:18:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12099,
                              "src": "8932:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8932:40:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8908:64:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11339,
                                      "name": "balance1Adjusted",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11324,
                                      "src": "9011:16:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11337,
                                      "name": "balance0Adjusted",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11311,
                                      "src": "8990:16:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12127,
                                    "src": "8990:20:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8990:38:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000_by_1",
                                        "typeString": "int_const 1000000"
                                      },
                                      "id": 11351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31303030",
                                        "id": 11349,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9067:4:30",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000_by_1",
                                          "typeString": "int_const 1000"
                                        },
                                        "value": "1000"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 11350,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9073:1:30",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "9067:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000_by_1",
                                        "typeString": "int_const 1000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000_by_1",
                                        "typeString": "int_const 1000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11346,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11166,
                                          "src": "9052:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 11343,
                                              "name": "_reserve0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11164,
                                              "src": "9037:9:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            ],
                                            "id": 11342,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "9032:4:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 11341,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "9032:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 11344,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9032:15:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11345,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12127,
                                        "src": "9032:19:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 11347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9032:30:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12127,
                                    "src": "9032:34:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9032:43:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8990:85:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "556e697377617056323a204b",
                                "id": 11354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9077:14:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af",
                                  "typeString": "literal_string \"UniswapV2: K\""
                                },
                                "value": "UniswapV2: K"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af",
                                  "typeString": "literal_string \"UniswapV2: K\""
                                }
                              ],
                              "id": 11336,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "8982:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 11355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8982:110:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 11356,
                          "nodeType": "ExpressionStatement",
                          "src": "8982:110:30"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11359,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11182,
                            "src": "9121:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11360,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11185,
                            "src": "9131:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11361,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11164,
                            "src": "9141:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11362,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11166,
                            "src": "9152:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 11358,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10711,
                          "src": "9113:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 11363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9113:49:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11364,
                      "nodeType": "ExpressionStatement",
                      "src": "9113:49:30"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11366,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "9182:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9182:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11368,
                            "name": "amount0In",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11268,
                            "src": "9194:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11369,
                            "name": "amount1In",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11284,
                            "src": "9205:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11370,
                            "name": "amount0Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11141,
                            "src": "9216:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11371,
                            "name": "amount1Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11143,
                            "src": "9228:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11372,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11145,
                            "src": "9240:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11365,
                          "name": "Swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10557,
                          "src": "9177:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256,uint256,uint256,uint256,address)"
                          }
                        },
                        "id": 11373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9177:66:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11374,
                      "nodeType": "EmitStatement",
                      "src": "9172:71:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "022c0d9f",
                "id": 11376,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 11150,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 11149,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10460,
                      "src": "7465:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7465:4:30"
                  }
                ],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11148,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11141,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11376,
                      "src": "7389:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11140,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7389:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11143,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11376,
                      "src": "7406:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11142,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7406:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11145,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11376,
                      "src": "7423:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11144,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7423:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11147,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11376,
                      "src": "7435:19:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11146,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7435:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7388:67:30"
                },
                "returnParameters": {
                  "id": 11151,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7470:0:30"
                },
                "scope": 11456,
                "src": "7375:1875:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 11425,
                  "nodeType": "Block",
                  "src": "9336:303:30",
                  "statements": [
                    {
                      "assignments": [
                        11384
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11384,
                          "mutability": "mutable",
                          "name": "_token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11425,
                          "src": "9346:15:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 11383,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9346:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11386,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 11385,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10424,
                        "src": "9364:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9346:24:30"
                    },
                    {
                      "assignments": [
                        11388
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11388,
                          "mutability": "mutable",
                          "name": "_token1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11425,
                          "src": "9395:15:30",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 11387,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9395:7:30",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11390,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 11389,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10426,
                        "src": "9413:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9395:24:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11392,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11384,
                            "src": "9458:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11393,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11378,
                            "src": "9467:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11404,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10428,
                                "src": "9523:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11400,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9512:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                          "typeString": "contract UniswapV2Pair"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                          "typeString": "contract UniswapV2Pair"
                                        }
                                      ],
                                      "id": 11399,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9504:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11398,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9504:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 11401,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9504:13:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11395,
                                        "name": "_token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11384,
                                        "src": "9485:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11394,
                                      "name": "IERC20Uniswap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11540,
                                      "src": "9471:13:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                        "typeString": "type(contract IERC20Uniswap)"
                                      }
                                    },
                                    "id": 11396,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9471:22:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                      "typeString": "contract IERC20Uniswap"
                                    }
                                  },
                                  "id": 11397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11501,
                                  "src": "9471:32:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 11402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9471:47:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12099,
                              "src": "9471:51:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9471:61:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 11391,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10525,
                          "src": "9444:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 11406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9444:89:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11407,
                      "nodeType": "ExpressionStatement",
                      "src": "9444:89:30"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11409,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11388,
                            "src": "9557:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11410,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11378,
                            "src": "9566:2:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11421,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "9622:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11417,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9611:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                          "typeString": "contract UniswapV2Pair"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                          "typeString": "contract UniswapV2Pair"
                                        }
                                      ],
                                      "id": 11416,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9603:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11415,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9603:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 11418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9603:13:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11412,
                                        "name": "_token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11388,
                                        "src": "9584:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11411,
                                      "name": "IERC20Uniswap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11540,
                                      "src": "9570:13:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                        "typeString": "type(contract IERC20Uniswap)"
                                      }
                                    },
                                    "id": 11413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9570:22:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                      "typeString": "contract IERC20Uniswap"
                                    }
                                  },
                                  "id": 11414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11501,
                                  "src": "9570:32:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 11419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9570:47:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12099,
                              "src": "9570:51:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9570:61:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 11408,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10525,
                          "src": "9543:13:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 11423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9543:89:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11424,
                      "nodeType": "ExpressionStatement",
                      "src": "9543:89:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bc25cf77",
                "id": 11426,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 11381,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 11380,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10460,
                      "src": "9331:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9331:4:30"
                  }
                ],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11379,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11378,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11426,
                      "src": "9310:10:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11377,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9310:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9309:12:30"
                },
                "returnParameters": {
                  "id": 11382,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9336:0:30"
                },
                "scope": 11456,
                "src": "9296:343:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 11454,
                  "nodeType": "Block",
                  "src": "9715:140:30",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11438,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "9773:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                      "typeString": "contract UniswapV2Pair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                      "typeString": "contract UniswapV2Pair"
                                    }
                                  ],
                                  "id": 11437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9765:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 11436,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9765:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 11439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9765:13:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11433,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10424,
                                    "src": "9747:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11432,
                                  "name": "IERC20Uniswap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11540,
                                  "src": "9733:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                    "typeString": "type(contract IERC20Uniswap)"
                                  }
                                },
                                "id": 11434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9733:21:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                  "typeString": "contract IERC20Uniswap"
                                }
                              },
                              "id": 11435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11501,
                              "src": "9733:31:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 11440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9733:46:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11447,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "9821:4:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                      "typeString": "contract UniswapV2Pair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_UniswapV2Pair_$11456",
                                      "typeString": "contract UniswapV2Pair"
                                    }
                                  ],
                                  "id": 11446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9813:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 11445,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9813:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 11448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9813:13:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11442,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10426,
                                    "src": "9795:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11441,
                                  "name": "IERC20Uniswap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11540,
                                  "src": "9781:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Uniswap_$11540_$",
                                    "typeString": "type(contract IERC20Uniswap)"
                                  }
                                },
                                "id": 11443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9781:21:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Uniswap_$11540",
                                  "typeString": "contract IERC20Uniswap"
                                }
                              },
                              "id": 11444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11501,
                              "src": "9781:31:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 11449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9781:46:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11450,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10428,
                            "src": "9829:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11451,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10430,
                            "src": "9839:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 11431,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10711,
                          "src": "9725:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 11452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9725:123:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 11453,
                      "nodeType": "ExpressionStatement",
                      "src": "9725:123:30"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fff6cae9",
                "id": 11455,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 11429,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 11428,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10460,
                      "src": "9710:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9710:4:30"
                  }
                ],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11427,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9698:2:30"
                },
                "returnParameters": {
                  "id": 11430,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9715:0:30"
                },
                "scope": 11456,
                "src": "9685:170:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11457,
            "src": "285:9572:30"
          }
        ],
        "src": "37:9821:30"
      }
    },
    "elephantdexcore/contracts/interfaces/IERC20.sol": {
      "id": 31,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/interfaces/IERC20.sol",
        "exportedSymbols": {
          "IERC20Uniswap": [
            11540
          ]
        },
        "id": 11541,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11458,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:31"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 11540,
            "linearizedBaseContracts": [
              11540
            ],
            "name": "IERC20Uniswap",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 11466,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11465,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11460,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11466,
                      "src": "108:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11459,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "108:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11462,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11466,
                      "src": "131:23:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11461,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "131:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11464,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11466,
                      "src": "156:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11463,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "156:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "107:60:31"
                },
                "src": "93:75:31"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11474,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11473,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11468,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11474,
                      "src": "188:20:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11467,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "188:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11470,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11474,
                      "src": "210:18:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11469,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "210:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11472,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11474,
                      "src": "230:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11471,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "230:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "187:54:31"
                },
                "src": "173:69:31"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 11479,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11475,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "261:2:31"
                },
                "returnParameters": {
                  "id": 11478,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11477,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11479,
                      "src": "287:13:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11476,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "287:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "286:15:31"
                },
                "scope": 11540,
                "src": "248:54:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 11484,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11480,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "322:2:31"
                },
                "returnParameters": {
                  "id": 11483,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11482,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11484,
                      "src": "348:13:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11481,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "348:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "347:15:31"
                },
                "scope": 11540,
                "src": "307:56:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 11489,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11485,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "385:2:31"
                },
                "returnParameters": {
                  "id": 11488,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11487,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11489,
                      "src": "411:5:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11486,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "411:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "410:7:31"
                },
                "scope": 11540,
                "src": "368:50:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 11494,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11490,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "443:2:31"
                },
                "returnParameters": {
                  "id": 11493,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11492,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11494,
                      "src": "469:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11491,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "469:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "468:6:31"
                },
                "scope": 11540,
                "src": "423:52:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 11501,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11497,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11496,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11501,
                      "src": "499:13:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11495,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "499:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "498:15:31"
                },
                "returnParameters": {
                  "id": 11500,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11499,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11501,
                      "src": "537:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11498,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "537:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "536:6:31"
                },
                "scope": 11540,
                "src": "480:63:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 11510,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11506,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11503,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11510,
                      "src": "567:13:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11502,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "567:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11505,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11510,
                      "src": "582:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11504,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "582:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "566:32:31"
                },
                "returnParameters": {
                  "id": 11509,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11508,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11510,
                      "src": "622:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11507,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "622:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "621:6:31"
                },
                "scope": 11540,
                "src": "548:80:31",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 11519,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11515,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11512,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "651:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11511,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "651:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11514,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "668:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11513,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "668:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "650:29:31"
                },
                "returnParameters": {
                  "id": 11518,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11517,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "698:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11516,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "698:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "697:6:31"
                },
                "scope": 11540,
                "src": "634:70:31",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 11528,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11524,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11521,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11528,
                      "src": "727:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11520,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11523,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11528,
                      "src": "739:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11522,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "739:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "726:24:31"
                },
                "returnParameters": {
                  "id": 11527,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11526,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11528,
                      "src": "769:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11525,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "769:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "768:6:31"
                },
                "scope": 11540,
                "src": "709:66:31",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 11539,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11535,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11530,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11539,
                      "src": "802:12:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11529,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "802:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11532,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11539,
                      "src": "816:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11531,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "816:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11534,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11539,
                      "src": "828:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11533,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "828:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "801:38:31"
                },
                "returnParameters": {
                  "id": 11538,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11537,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11539,
                      "src": "858:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11536,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "858:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "857:6:31"
                },
                "scope": 11540,
                "src": "780:84:31",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11541,
            "src": "63:803:31"
          }
        ],
        "src": "37:830:31"
      }
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol": {
      "id": 32,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol",
        "exportedSymbols": {
          "IUniswapV2Callee": [
            11554
          ]
        },
        "id": 11555,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11542,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:32"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 11554,
            "linearizedBaseContracts": [
              11554
            ],
            "name": "IUniswapV2Callee",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "10d1e85c",
                "id": 11553,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "uniswapV2Call",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11551,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11544,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11553,
                      "src": "119:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11543,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "119:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11546,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11553,
                      "src": "135:12:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11545,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "135:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11548,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11553,
                      "src": "149:12:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11547,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "149:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11550,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11553,
                      "src": "163:19:32",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11549,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "163:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "118:65:32"
                },
                "returnParameters": {
                  "id": 11552,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "192:0:32"
                },
                "scope": 11554,
                "src": "96:97:32",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11555,
            "src": "63:132:32"
          }
        ],
        "src": "37:159:32"
      }
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol": {
      "id": 33,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol",
        "exportedSymbols": {
          "IUniswapV2ERC20": [
            11672
          ]
        },
        "id": 11673,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11556,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:33"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 11672,
            "linearizedBaseContracts": [
              11672
            ],
            "name": "IUniswapV2ERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 11564,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11563,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11558,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11564,
                      "src": "110:21:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11557,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "110:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11560,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11564,
                      "src": "133:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11559,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "133:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11562,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11564,
                      "src": "158:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11561,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "158:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "109:60:33"
                },
                "src": "95:75:33"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11572,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11571,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11566,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11572,
                      "src": "190:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11565,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "190:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11568,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11572,
                      "src": "212:18:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11567,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "212:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11570,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11572,
                      "src": "232:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11569,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "232:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "189:54:33"
                },
                "src": "175:69:33"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 11577,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11573,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "263:2:33"
                },
                "returnParameters": {
                  "id": 11576,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11575,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11577,
                      "src": "289:13:33",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11574,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:6:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "288:15:33"
                },
                "scope": 11672,
                "src": "250:54:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 11582,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11578,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "324:2:33"
                },
                "returnParameters": {
                  "id": 11581,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11580,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11582,
                      "src": "350:13:33",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11579,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "350:6:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "349:15:33"
                },
                "scope": 11672,
                "src": "309:56:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 11587,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11583,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "387:2:33"
                },
                "returnParameters": {
                  "id": 11586,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11585,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11587,
                      "src": "413:5:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11584,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "413:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "412:7:33"
                },
                "scope": 11672,
                "src": "370:50:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 11592,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11588,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "445:2:33"
                },
                "returnParameters": {
                  "id": 11591,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11590,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11592,
                      "src": "471:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11589,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "471:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "470:6:33"
                },
                "scope": 11672,
                "src": "425:52:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 11599,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11595,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11594,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11599,
                      "src": "501:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11593,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "501:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "500:15:33"
                },
                "returnParameters": {
                  "id": 11598,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11597,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11599,
                      "src": "539:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11596,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "539:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "538:6:33"
                },
                "scope": 11672,
                "src": "482:63:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 11608,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11604,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11601,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11608,
                      "src": "569:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11600,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "569:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11603,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11608,
                      "src": "584:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11602,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "584:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "568:32:33"
                },
                "returnParameters": {
                  "id": 11607,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11606,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11608,
                      "src": "624:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11605,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "624:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "623:6:33"
                },
                "scope": 11672,
                "src": "550:80:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 11617,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11613,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11610,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11617,
                      "src": "653:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11609,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "653:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11612,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11617,
                      "src": "670:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11611,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "670:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "652:29:33"
                },
                "returnParameters": {
                  "id": 11616,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11615,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11617,
                      "src": "700:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11614,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "700:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "699:6:33"
                },
                "scope": 11672,
                "src": "636:70:33",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 11626,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11622,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11619,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11626,
                      "src": "729:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11618,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "729:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11621,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11626,
                      "src": "741:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11620,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "741:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "728:24:33"
                },
                "returnParameters": {
                  "id": 11625,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11624,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11626,
                      "src": "771:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11623,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "771:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "770:6:33"
                },
                "scope": 11672,
                "src": "711:66:33",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 11637,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11633,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11628,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11637,
                      "src": "804:12:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11627,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "804:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11630,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11637,
                      "src": "818:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11629,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "818:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11632,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11637,
                      "src": "830:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11631,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "830:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "803:38:33"
                },
                "returnParameters": {
                  "id": 11636,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11635,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11637,
                      "src": "860:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11634,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "860:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "859:6:33"
                },
                "scope": 11672,
                "src": "782:84:33",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3644e515",
                "id": 11642,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11638,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "897:2:33"
                },
                "returnParameters": {
                  "id": 11641,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11640,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11642,
                      "src": "923:7:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11639,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "923:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "922:9:33"
                },
                "scope": 11672,
                "src": "872:60:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "30adf81f",
                "id": 11647,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "PERMIT_TYPEHASH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11643,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "961:2:33"
                },
                "returnParameters": {
                  "id": 11646,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11645,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "987:7:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11644,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "987:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "986:9:33"
                },
                "scope": 11672,
                "src": "937:59:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ecebe00",
                "id": 11654,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "nonces",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11650,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11649,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11654,
                      "src": "1017:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11648,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1017:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1016:15:33"
                },
                "returnParameters": {
                  "id": 11653,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11652,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11654,
                      "src": "1055:4:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11651,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1055:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1054:6:33"
                },
                "scope": 11672,
                "src": "1001:60:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 11671,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11669,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11656,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1083:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1083:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11658,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1098:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11657,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1098:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11660,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1115:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11659,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1115:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11662,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1127:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11661,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1127:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11664,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1142:7:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11663,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1142:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11666,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1151:9:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11665,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1151:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11668,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11671,
                      "src": "1162:9:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11667,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1162:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1082:90:33"
                },
                "returnParameters": {
                  "id": 11670,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1181:0:33"
                },
                "scope": 11672,
                "src": "1067:115:33",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11673,
            "src": "63:1121:33"
          }
        ],
        "src": "37:1147:33"
      }
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol": {
      "id": 34,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
        "exportedSymbols": {
          "IUniswapV2Factory": [
            11735
          ]
        },
        "id": 11736,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11674,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:34"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 11735,
            "linearizedBaseContracts": [
              11735
            ],
            "name": "IUniswapV2Factory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 11684,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11683,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11676,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11684,
                      "src": "115:22:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11675,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "115:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11678,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11684,
                      "src": "139:22:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11677,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "139:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11680,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11684,
                      "src": "163:12:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11679,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "163:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11682,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11684,
                      "src": "177:4:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11681,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "177:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "114:68:34"
                },
                "src": "97:86:34"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "017e7e58",
                "id": 11689,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11685,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "203:2:34"
                },
                "returnParameters": {
                  "id": 11688,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11687,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11689,
                      "src": "229:7:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11686,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "229:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "228:9:34"
                },
                "scope": 11735,
                "src": "189:49:34",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "094b7415",
                "id": 11694,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeToSetter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11690,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "263:2:34"
                },
                "returnParameters": {
                  "id": 11693,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11692,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11694,
                      "src": "289:7:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11691,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "288:9:34"
                },
                "scope": 11735,
                "src": "243:55:34",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "e6a43905",
                "id": 11703,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11699,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11696,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11703,
                      "src": "321:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11695,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "321:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11698,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11703,
                      "src": "337:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11697,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "337:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "320:32:34"
                },
                "returnParameters": {
                  "id": 11702,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11701,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11703,
                      "src": "376:12:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11700,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "376:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "375:14:34"
                },
                "scope": 11735,
                "src": "304:86:34",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1e3dd18b",
                "id": 11710,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairs",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11706,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11705,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11710,
                      "src": "413:4:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11704,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "413:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "412:6:34"
                },
                "returnParameters": {
                  "id": 11709,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11708,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11710,
                      "src": "442:12:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11707,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "442:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "441:14:34"
                },
                "scope": 11735,
                "src": "395:61:34",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "574f2ba3",
                "id": 11715,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11711,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "484:2:34"
                },
                "returnParameters": {
                  "id": 11714,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11713,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11715,
                      "src": "510:4:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11712,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "510:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "509:6:34"
                },
                "scope": 11735,
                "src": "461:55:34",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c9c65396",
                "id": 11724,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11720,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11717,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11724,
                      "src": "542:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11716,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "542:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11719,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11724,
                      "src": "558:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11718,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "558:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "541:32:34"
                },
                "returnParameters": {
                  "id": 11723,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11722,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11724,
                      "src": "592:12:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11721,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "592:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "591:14:34"
                },
                "scope": 11735,
                "src": "522:84:34",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f46901ed",
                "id": 11729,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11727,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11726,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11729,
                      "src": "630:7:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "630:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "629:9:34"
                },
                "returnParameters": {
                  "id": 11728,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "647:0:34"
                },
                "scope": 11735,
                "src": "612:36:34",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a2e74af6",
                "id": 11734,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeToSetter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11732,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11731,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11734,
                      "src": "677:7:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11730,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "677:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "676:9:34"
                },
                "returnParameters": {
                  "id": 11733,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "694:0:34"
                },
                "scope": 11735,
                "src": "653:42:34",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11736,
            "src": "63:634:34"
          }
        ],
        "src": "37:661:34"
      }
    },
    "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol": {
      "id": 35,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
        "exportedSymbols": {
          "IUniswapV2Pair": [
            11977
          ]
        },
        "id": 11978,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11737,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:35"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 11977,
            "linearizedBaseContracts": [
              11977
            ],
            "name": "IUniswapV2Pair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 11745,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11739,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11745,
                      "src": "109:21:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11738,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "109:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11741,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11745,
                      "src": "132:23:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11740,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "132:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11743,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11745,
                      "src": "157:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11742,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "157:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "108:60:35"
                },
                "src": "94:75:35"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11753,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11752,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11747,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11753,
                      "src": "189:20:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11746,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "189:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11749,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11753,
                      "src": "211:18:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11748,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "211:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11751,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11753,
                      "src": "231:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11750,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "231:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "188:54:35"
                },
                "src": "174:69:35"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 11758,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11754,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "262:2:35"
                },
                "returnParameters": {
                  "id": 11757,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11756,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11758,
                      "src": "288:13:35",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11755,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "288:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "287:15:35"
                },
                "scope": 11977,
                "src": "249:54:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 11763,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11759,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "323:2:35"
                },
                "returnParameters": {
                  "id": 11762,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11761,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11763,
                      "src": "349:13:35",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 11760,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "349:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "348:15:35"
                },
                "scope": 11977,
                "src": "308:56:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 11768,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11764,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "386:2:35"
                },
                "returnParameters": {
                  "id": 11767,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11766,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11768,
                      "src": "412:5:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11765,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:5:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "411:7:35"
                },
                "scope": 11977,
                "src": "369:50:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 11773,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11769,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "444:2:35"
                },
                "returnParameters": {
                  "id": 11772,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11771,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11773,
                      "src": "470:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11770,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "470:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "469:6:35"
                },
                "scope": 11977,
                "src": "424:52:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 11780,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11776,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11775,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11780,
                      "src": "500:13:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11774,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "500:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "499:15:35"
                },
                "returnParameters": {
                  "id": 11779,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11778,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11780,
                      "src": "538:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11777,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "538:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "537:6:35"
                },
                "scope": 11977,
                "src": "481:63:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 11789,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11785,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11782,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11789,
                      "src": "568:13:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11781,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "568:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11784,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11789,
                      "src": "583:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11783,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "583:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "567:32:35"
                },
                "returnParameters": {
                  "id": 11788,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11787,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11789,
                      "src": "623:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11786,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "623:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "622:6:35"
                },
                "scope": 11977,
                "src": "549:80:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 11798,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11794,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11791,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11798,
                      "src": "652:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11790,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "652:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11793,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11798,
                      "src": "669:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11792,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "669:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "651:29:35"
                },
                "returnParameters": {
                  "id": 11797,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11796,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11798,
                      "src": "699:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11795,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "699:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "698:6:35"
                },
                "scope": 11977,
                "src": "635:70:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 11807,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11803,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11800,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11807,
                      "src": "728:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11799,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "728:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11802,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11807,
                      "src": "740:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11801,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "740:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "727:24:35"
                },
                "returnParameters": {
                  "id": 11806,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11805,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11807,
                      "src": "770:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11804,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "770:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "769:6:35"
                },
                "scope": 11977,
                "src": "710:66:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 11818,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11814,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11809,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11818,
                      "src": "803:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11808,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "803:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11811,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11818,
                      "src": "817:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11810,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "817:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11813,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11818,
                      "src": "829:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11812,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "829:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "802:38:35"
                },
                "returnParameters": {
                  "id": 11817,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11816,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11818,
                      "src": "859:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11815,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "859:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "858:6:35"
                },
                "scope": 11977,
                "src": "781:84:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3644e515",
                "id": 11823,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11819,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "896:2:35"
                },
                "returnParameters": {
                  "id": 11822,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11821,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11823,
                      "src": "922:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11820,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "922:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "921:9:35"
                },
                "scope": 11977,
                "src": "871:60:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "30adf81f",
                "id": 11828,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "PERMIT_TYPEHASH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11824,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "960:2:35"
                },
                "returnParameters": {
                  "id": 11827,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11826,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11828,
                      "src": "986:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11825,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "985:9:35"
                },
                "scope": 11977,
                "src": "936:59:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ecebe00",
                "id": 11835,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "nonces",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11831,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11830,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11835,
                      "src": "1016:13:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11829,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1016:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1015:15:35"
                },
                "returnParameters": {
                  "id": 11834,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11833,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11835,
                      "src": "1054:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11832,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1054:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1053:6:35"
                },
                "scope": 11977,
                "src": "1000:60:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 11852,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11850,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11837,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1082:13:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11836,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1082:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11839,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1097:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11838,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1097:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11841,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1114:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11840,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1114:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11843,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1126:13:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11842,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1126:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11845,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1141:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 11844,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1141:5:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11847,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1150:9:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11846,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1150:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11849,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11852,
                      "src": "1161:9:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11848,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1161:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1081:90:35"
                },
                "returnParameters": {
                  "id": 11851,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1180:0:35"
                },
                "scope": 11977,
                "src": "1066:115:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11860,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11859,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11854,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11860,
                      "src": "1198:22:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11853,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1198:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11856,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11860,
                      "src": "1222:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11855,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1222:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11858,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11860,
                      "src": "1236:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11857,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1236:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1197:52:35"
                },
                "src": "1187:63:35"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11870,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11869,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11862,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11870,
                      "src": "1266:22:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11861,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1266:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11864,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11870,
                      "src": "1290:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11863,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1290:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11866,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11870,
                      "src": "1304:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11865,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1304:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11868,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11870,
                      "src": "1318:18:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11867,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1318:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1265:72:35"
                },
                "src": "1255:83:35"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11884,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11883,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11872,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1363:22:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11871,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1363:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11874,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1395:14:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11873,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11876,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1419:14:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11875,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1419:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11878,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1443:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11877,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1443:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11880,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1468:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11879,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1468:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11882,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11884,
                      "src": "1493:18:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11881,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1493:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1353:164:35"
                },
                "src": "1343:175:35"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 11890,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 11889,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11886,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11890,
                      "src": "1534:16:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 11885,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1534:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11888,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11890,
                      "src": "1552:16:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 11887,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1552:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1533:36:35"
                },
                "src": "1523:47:35"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ba9a7a56",
                "id": 11895,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11891,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1602:2:35"
                },
                "returnParameters": {
                  "id": 11894,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11893,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11895,
                      "src": "1628:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11892,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1628:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1627:6:35"
                },
                "scope": 11977,
                "src": "1576:58:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c45a0155",
                "id": 11900,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11896,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1655:2:35"
                },
                "returnParameters": {
                  "id": 11899,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11898,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11900,
                      "src": "1681:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11897,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1681:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1680:9:35"
                },
                "scope": 11977,
                "src": "1639:51:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0dfe1681",
                "id": 11905,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token0",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11901,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1710:2:35"
                },
                "returnParameters": {
                  "id": 11904,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11903,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11905,
                      "src": "1736:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11902,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1736:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1735:9:35"
                },
                "scope": 11977,
                "src": "1695:50:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d21220a7",
                "id": 11910,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token1",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11906,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1765:2:35"
                },
                "returnParameters": {
                  "id": 11909,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11908,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11910,
                      "src": "1791:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11907,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1791:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1790:9:35"
                },
                "scope": 11977,
                "src": "1750:50:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0902f1ac",
                "id": 11919,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11911,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1825:2:35"
                },
                "returnParameters": {
                  "id": 11918,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11913,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11919,
                      "src": "1851:16:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 11912,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1851:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11915,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11919,
                      "src": "1869:16:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 11914,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1869:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11917,
                      "mutability": "mutable",
                      "name": "blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11919,
                      "src": "1887:25:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 11916,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1887:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1850:63:35"
                },
                "scope": 11977,
                "src": "1805:109:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5909c0d5",
                "id": 11924,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price0CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11920,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1948:2:35"
                },
                "returnParameters": {
                  "id": 11923,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11922,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11924,
                      "src": "1974:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11921,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1974:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1973:6:35"
                },
                "scope": 11977,
                "src": "1919:61:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5a3d5493",
                "id": 11929,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price1CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11925,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2014:2:35"
                },
                "returnParameters": {
                  "id": 11928,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11927,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11929,
                      "src": "2040:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11926,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2040:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2039:6:35"
                },
                "scope": 11977,
                "src": "1985:61:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7464fc3d",
                "id": 11934,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "kLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11930,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2065:2:35"
                },
                "returnParameters": {
                  "id": 11933,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11932,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11934,
                      "src": "2091:4:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11931,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2091:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2090:6:35"
                },
                "scope": 11977,
                "src": "2051:46:35",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6a627842",
                "id": 11941,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11937,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11936,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11941,
                      "src": "2117:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11935,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2117:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2116:12:35"
                },
                "returnParameters": {
                  "id": 11940,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11939,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11941,
                      "src": "2147:14:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11938,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2147:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2146:16:35"
                },
                "scope": 11977,
                "src": "2103:60:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "89afcb44",
                "id": 11950,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11944,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11943,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11950,
                      "src": "2182:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11942,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2182:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2181:12:35"
                },
                "returnParameters": {
                  "id": 11949,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11946,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11950,
                      "src": "2212:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11945,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2212:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11948,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11950,
                      "src": "2226:12:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11947,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2226:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2211:28:35"
                },
                "scope": 11977,
                "src": "2168:72:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "022c0d9f",
                "id": 11961,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11959,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11952,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11961,
                      "src": "2259:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11951,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2259:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11954,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11961,
                      "src": "2276:15:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11953,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2276:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11956,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11961,
                      "src": "2293:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11955,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2293:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11958,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11961,
                      "src": "2305:19:35",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11957,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2305:5:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2258:67:35"
                },
                "returnParameters": {
                  "id": 11960,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2334:0:35"
                },
                "scope": 11977,
                "src": "2245:90:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "bc25cf77",
                "id": 11966,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11964,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11963,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11966,
                      "src": "2354:10:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11962,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2354:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2353:12:35"
                },
                "returnParameters": {
                  "id": 11965,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2374:0:35"
                },
                "scope": 11977,
                "src": "2340:35:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fff6cae9",
                "id": 11969,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11967,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2393:2:35"
                },
                "returnParameters": {
                  "id": 11968,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2404:0:35"
                },
                "scope": 11977,
                "src": "2380:25:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "485cc955",
                "id": 11976,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11974,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11971,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11976,
                      "src": "2431:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11970,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2431:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11973,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11976,
                      "src": "2440:7:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11972,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2440:7:35",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2430:18:35"
                },
                "returnParameters": {
                  "id": 11975,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2457:0:35"
                },
                "scope": 11977,
                "src": "2411:47:35",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 11978,
            "src": "63:2397:35"
          }
        ],
        "src": "37:2424:35"
      }
    },
    "elephantdexcore/contracts/libraries/Math.sol": {
      "id": 36,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/libraries/Math.sol",
        "exportedSymbols": {
          "Math": [
            12053
          ]
        },
        "id": 12054,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 11979,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:36"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 12053,
            "linearizedBaseContracts": [
              12053
            ],
            "name": "Math",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 11997,
                  "nodeType": "Block",
                  "src": "195:34:36",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 11995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 11988,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11986,
                          "src": "205:1:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11989,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11981,
                              "src": "209:1:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11990,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11983,
                              "src": "213:1:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "209:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 11993,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11983,
                            "src": "221:1:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "209:13:36",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 11992,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11981,
                            "src": "217:1:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "205:17:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11996,
                      "nodeType": "ExpressionStatement",
                      "src": "205:17:36"
                    }
                  ]
                },
                "documentation": null,
                "id": 11998,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "min",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 11984,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11981,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11998,
                      "src": "148:6:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11980,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "148:4:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11983,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11998,
                      "src": "156:6:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11982,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "156:4:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "147:16:36"
                },
                "returnParameters": {
                  "id": 11987,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 11986,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11998,
                      "src": "187:6:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11985,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "187:4:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "186:8:36"
                },
                "scope": 12053,
                "src": "135:94:36",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 12051,
                  "nodeType": "Block",
                  "src": "397:239:36",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12007,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12005,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12000,
                          "src": "411:1:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 12006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "415:1:36",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "411:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12041,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12000,
                            "src": "592:1:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "597:1:36",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "592:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12049,
                        "nodeType": "IfStatement",
                        "src": "588:42:36",
                        "trueBody": {
                          "id": 12048,
                          "nodeType": "Block",
                          "src": "600:30:36",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 12044,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12003,
                                  "src": "614:1:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 12045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "618:1:36",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "614:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12047,
                              "nodeType": "ExpressionStatement",
                              "src": "614:5:36"
                            }
                          ]
                        }
                      },
                      "id": 12050,
                      "nodeType": "IfStatement",
                      "src": "407:223:36",
                      "trueBody": {
                        "id": 12040,
                        "nodeType": "Block",
                        "src": "418:164:36",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 12010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 12008,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12003,
                                "src": "432:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 12009,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12000,
                                "src": "436:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "432:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12011,
                            "nodeType": "ExpressionStatement",
                            "src": "432:5:36"
                          },
                          {
                            "assignments": [
                              12013
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 12013,
                                "mutability": "mutable",
                                "name": "x",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 12040,
                                "src": "451:6:36",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 12012,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "451:4:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 12019,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12014,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12000,
                                  "src": "460:1:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 12015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "464:1:36",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "460:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 12017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "468:1:36",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "460:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "451:18:36"
                          },
                          {
                            "body": {
                              "id": 12038,
                              "nodeType": "Block",
                              "src": "497:75:36",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 12023,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12003,
                                      "src": "515:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 12024,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12013,
                                      "src": "519:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "515:5:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 12026,
                                  "nodeType": "ExpressionStatement",
                                  "src": "515:5:36"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12036,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 12027,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12013,
                                      "src": "538:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 12035,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 12032,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 12030,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 12028,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12000,
                                                "src": "543:1:36",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 12029,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12013,
                                                "src": "547:1:36",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "543:5:36",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 12031,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12013,
                                              "src": "551:1:36",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "543:9:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 12033,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "542:11:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 12034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "556:1:36",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "542:15:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "538:19:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 12037,
                                  "nodeType": "ExpressionStatement",
                                  "src": "538:19:36"
                                }
                              ]
                            },
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12020,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12013,
                                "src": "490:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12021,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12003,
                                "src": "494:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "490:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12039,
                            "nodeType": "WhileStatement",
                            "src": "483:89:36"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 12052,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12001,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12000,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12052,
                      "src": "358:6:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11999,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "358:4:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "357:8:36"
                },
                "returnParameters": {
                  "id": 12004,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12003,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12052,
                      "src": "389:6:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12002,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:4:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "388:8:36"
                },
                "scope": 12053,
                "src": "344:292:36",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 12054,
            "src": "116:522:36"
          }
        ],
        "src": "37:602:36"
      }
    },
    "elephantdexcore/contracts/libraries/SafeMath.sol": {
      "id": 37,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/libraries/SafeMath.sol",
        "exportedSymbols": {
          "SafeMathUniswap": [
            12128
          ]
        },
        "id": 12129,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 12055,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:37"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 12128,
            "linearizedBaseContracts": [
              12128
            ],
            "name": "SafeMathUniswap",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 12076,
                  "nodeType": "Block",
                  "src": "259:66:37",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 12069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12065,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12062,
                                    "src": "278:1:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 12068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 12066,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12057,
                                      "src": "282:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 12067,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12059,
                                      "src": "286:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "282:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "278:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 12070,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "277:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12071,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12057,
                              "src": "292:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "277:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                            "id": 12073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "295:22:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            },
                            "value": "ds-math-add-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            }
                          ],
                          "id": 12064,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "269:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 12074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "269:49:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 12075,
                      "nodeType": "ExpressionStatement",
                      "src": "269:49:37"
                    }
                  ]
                },
                "documentation": null,
                "id": 12077,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12060,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12057,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12077,
                      "src": "212:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12056,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "212:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12059,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12077,
                      "src": "220:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12058,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "220:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "211:16:37"
                },
                "returnParameters": {
                  "id": 12063,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12062,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12077,
                      "src": "251:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12061,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "251:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "250:8:37"
                },
                "scope": 12128,
                "src": "199:126:37",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 12098,
                  "nodeType": "Block",
                  "src": "391:67:37",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 12091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12087,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12084,
                                    "src": "410:1:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 12090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 12088,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12079,
                                      "src": "414:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 12089,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12081,
                                      "src": "418:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "414:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "410:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 12092,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "409:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12093,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12079,
                              "src": "424:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "409:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                            "id": 12095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "427:23:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            },
                            "value": "ds-math-sub-underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            }
                          ],
                          "id": 12086,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "401:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 12096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "401:50:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 12097,
                      "nodeType": "ExpressionStatement",
                      "src": "401:50:37"
                    }
                  ]
                },
                "documentation": null,
                "id": 12099,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12082,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12079,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12099,
                      "src": "344:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12078,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "344:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12081,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12099,
                      "src": "352:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12080,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "352:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "343:16:37"
                },
                "returnParameters": {
                  "id": 12085,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12084,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12099,
                      "src": "383:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12083,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "383:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "382:8:37"
                },
                "scope": 12128,
                "src": "331:127:37",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 12126,
                  "nodeType": "Block",
                  "src": "524:80:37",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 12122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12109,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12103,
                                "src": "542:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 12110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "547:1:37",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "542:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 12112,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12106,
                                        "src": "553:1:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 12115,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 12113,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12101,
                                          "src": "557:1:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 12114,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12103,
                                          "src": "561:1:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "557:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "553:9:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 12117,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "552:11:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 12118,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12103,
                                  "src": "566:1:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "552:15:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12120,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12101,
                                "src": "571:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "552:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "542:30:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                            "id": 12123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "574:22:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            },
                            "value": "ds-math-mul-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            }
                          ],
                          "id": 12108,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "534:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 12124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "534:63:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 12125,
                      "nodeType": "ExpressionStatement",
                      "src": "534:63:37"
                    }
                  ]
                },
                "documentation": null,
                "id": 12127,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12104,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12101,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12127,
                      "src": "477:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12100,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "477:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12103,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12127,
                      "src": "485:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12102,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "485:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "476:16:37"
                },
                "returnParameters": {
                  "id": 12107,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12106,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12127,
                      "src": "516:6:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12105,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "516:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "515:8:37"
                },
                "scope": 12128,
                "src": "464:140:37",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 12129,
            "src": "169:437:37"
          }
        ],
        "src": "37:570:37"
      }
    },
    "elephantdexcore/contracts/libraries/UQ112x112.sol": {
      "id": 38,
      "AST": {
        "absolutePath": "elephantdexcore/contracts/libraries/UQ112x112.sol",
        "exportedSymbols": {
          "UQ112x112": [
            12172
          ]
        },
        "id": 12173,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 12130,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:38"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 12172,
            "linearizedBaseContracts": [
              12172
            ],
            "name": "UQ112x112",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 12135,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12172,
                "src": "244:30:38",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint224",
                  "typeString": "uint224"
                },
                "typeName": {
                  "id": 12131,
                  "name": "uint224",
                  "nodeType": "ElementaryTypeName",
                  "src": "244:7:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  },
                  "id": 12134,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 12132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "268:1:38",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "**",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "313132",
                    "id": 12133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "271:3:38",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "src": "268:6:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  }
                },
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 12151,
                  "nodeType": "Block",
                  "src": "381:57:38",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 12149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 12142,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12140,
                          "src": "391:1:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 12148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12145,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12137,
                                "src": "403:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 12144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "395:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 12143,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "395:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "395:10:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12147,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12135,
                            "src": "408:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "395:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "391:21:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 12150,
                      "nodeType": "ExpressionStatement",
                      "src": "391:21:38"
                    }
                  ]
                },
                "documentation": null,
                "id": 12152,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12138,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12137,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12152,
                      "src": "336:9:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 12136,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "336:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "335:11:38"
                },
                "returnParameters": {
                  "id": 12141,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12140,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12152,
                      "src": "370:9:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 12139,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "370:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "369:11:38"
                },
                "scope": 12172,
                "src": "320:118:38",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 12170,
                  "nodeType": "Block",
                  "src": "577:35:38",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 12168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 12161,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12159,
                          "src": "587:1:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 12167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12162,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12154,
                            "src": "591:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12165,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12156,
                                "src": "603:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 12164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "595:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 12163,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "595:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "595:10:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "591:14:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "587:18:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 12169,
                      "nodeType": "ExpressionStatement",
                      "src": "587:18:38"
                    }
                  ]
                },
                "documentation": null,
                "id": 12171,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "uqdiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 12157,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12154,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12171,
                      "src": "521:9:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 12153,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "521:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12156,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12171,
                      "src": "532:9:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 12155,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "532:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "520:22:38"
                },
                "returnParameters": {
                  "id": 12160,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 12159,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12171,
                      "src": "566:9:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 12158,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "566:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "565:11:38"
                },
                "scope": 12172,
                "src": "506:106:38",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 12173,
            "src": "220:394:38"
          }
        ],
        "src": "37:578:38"
      }
    }
  },
  "sourceList": [
    "@openzeppelin/contracts/access/Ownable.sol",
    "@openzeppelin/contracts/math/SafeMath.sol",
    "@openzeppelin/contracts/token/ERC20/ERC20.sol",
    "@openzeppelin/contracts/token/ERC20/IERC20.sol",
    "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
    "@openzeppelin/contracts/utils/Address.sol",
    "@openzeppelin/contracts/utils/Context.sol",
    "@openzeppelin/contracts/utils/EnumerableSet.sol",
    "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
    "contracts/Authorizable.sol",
    "contracts/CoinFlip.sol",
    "contracts/Dice.sol",
    "contracts/GovernanceToken.sol",
    "contracts/GovernanceVote.sol",
    "contracts/MasterBank.sol",
    "contracts/MasterBreeder.sol",
    "contracts/Pit.sol",
    "contracts/PitBreeder.sol",
    "contracts/Timelock.sol",
    "contracts/interfaces/IERC20.sol",
    "contracts/interfaces/IGovernanceToken.sol",
    "contracts/interfaces/IMasterBreeder.sol",
    "contracts/interfaces/IPit.sol",
    "contracts/mocks/ERC20Mock.sol",
    "contracts/mocks/PitBreederExploitMock.sol",
    "contracts/mocks/VenomSwapFactoryMock.sol",
    "contracts/mocks/VenomSwapPairMock.sol",
    "contracts/mocks/WETH9Mock.sol",
    "elephantdexcore/contracts/UniswapV2ERC20.sol",
    "elephantdexcore/contracts/UniswapV2Factory.sol",
    "elephantdexcore/contracts/UniswapV2Pair.sol",
    "elephantdexcore/contracts/interfaces/IERC20.sol",
    "elephantdexcore/contracts/interfaces/IUniswapV2Callee.sol",
    "elephantdexcore/contracts/interfaces/IUniswapV2ERC20.sol",
    "elephantdexcore/contracts/interfaces/IUniswapV2Factory.sol",
    "elephantdexcore/contracts/interfaces/IUniswapV2Pair.sol",
    "elephantdexcore/contracts/libraries/Math.sol",
    "elephantdexcore/contracts/libraries/SafeMath.sol",
    "elephantdexcore/contracts/libraries/UQ112x112.sol"
  ]
}